什么时候应该使用"accepts_nested_attributes_for"? 在下面的示例中,我可以成功地执行"user.microposts.create",而无需在用户模型中进行"accepts_nested_attributes_for"。
class Micropost < ActiveRecord::Base
belongs_to :user
end
class User < ActiveRecord::Base
has_many :microposts
end
accepts_nested_attributes_for
只是一个捷径。它定义了一个动态属性{field_name}_attributes
以便如果您有表单,则可以包含嵌套属性并自动将它们分配给关联。这样:
form_for :object do |f|
f.text_field :attr1
f.text_field :attr2
f.fields_for :association_attributes do |g|
g.text_field :nested1
g.text_field :nested2
end
end
这篇带有参数{object: {attr1: val, attr2: val, association_attributes: {nested1: val, nested2: val}}
的帖子,并将accepts_nested_attributes_for :association
添加到您的类中,使整个事情无需任何额外的代码即可工作。