ActiveRecord NoMethodError:nil的未定义方法`association':NilClass
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了ActiveRecord NoMethodError:nil的未定义方法`association':NilClass相关的知识,希望对你有一定的参考价值。
使用Rails 5.1.4,在使用#find
更改has_many
以预加载#includes
关联之后:
Website.includes(:configured_checks).find(params[:id])
抛出异常:
NoMethodError: undefined method `association' for nil:NilClass
答案
id
and x_id
need to have the same type
此问题暴露了重命名has_many
关系所有者的错误。当表重命名时,关联上的t.belongs_to
列的类型不再与它引用的表匹配,从而导致NoMethodError: undefined method 'association' for nil:NilClass
。
架构不正确:
# Website id here is a UUID:
create_table "websites", id: :uuid, default: -> { "uuid_generate_v4()" }, force: :cascade do |t|
end
# The foreign_key became a binint rather than uuid:
create_table "configured_checks", force: :cascade do |t|
t.bigint "website_id"
end
迁移后更正了架构:
# Website id here is a UUID:
create_table "websites", id: :uuid, default: -> { "uuid_generate_v4()" }, force: :cascade do |t|
end
# The website_id is now a uuid:
create_table "configured_checks", force: :cascade do |t|
t.uuid "website_id"
end
以上是关于ActiveRecord NoMethodError:nil的未定义方法`association':NilClass的主要内容,如果未能解决你的问题,请参考以下文章
找不到 id=#<ActiveRecord::Relation::ActiveRecord_Relation_User:0x2eb9b58> 的用户
找不到 ActiveRecord\MysqliAdapter
ruby 令人敬畏的ActiveRecord错误报告脚本。如何在Ruby脚本中使用ActiveRecord和SQLite。