为什么在已经可以通过父级保存时使用“accepts_nested_attributes_for”?

时间:2011-05-09 20:44:49

标签: ruby-on-rails-3

我什么时候应该使用“accepts_nested_attributes_for”?在下面的示例中,我可以成功地执行“user.microposts.create”而无需在User模型中使用“accepts_nested_attributes_for”。

class Micropost < ActiveRecord::Base
  belongs_to :user
end

class User < ActiveRecord::Base
  has_many :microposts
end

1 个答案:

答案 0 :(得分:3)

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,这样就无需任何额外代码即可使用。