【发布时间】:2018-07-09 16:49:05
【问题描述】:
我有一个模特 Book 和另一个模特 Title。下面简单地定义了这些关联。
class Book < ApplicationRecord
has_one :title
end
class Title < ApplicationRecord
belongs_to :book
end
现在,如果我在 Title 中生成外键为 book_id 的模式并为 Book 创建新记录,我将无法通过 book.title.create! 创建新的 Title 记录book.title 返回nil。
但是,如果我将关联更改为
class Book < ApplicationRecord
has_many :titles
end
那么我显然可以使用book.title.create! 创建一个新的Title 记录。因此,要使其与 has_one 关联一起工作,我必须做的就是像 book.title = Title.create!(foo: "bar", book_id: book.id) 这样的事情。
当我在后一种情况下检查book.title 的值时,控制台返回<ActiveRecord::Associations::CollectionProxy []>,但对于前者,book.title 返回nil,因此返回NoMethod Error for nil class。
我尝试关注官方文档和堆栈中的其他一些帖子。但不知何故,我仍然不清楚。
【问题讨论】:
标签: ruby-on-rails ruby associations has-many has-one