在 ActiveRecord 中使用新功能accepts_nested_attributes_for
时,可以使用选项:allow_destroy => true
. 设置此选项后,任何包含嵌套属性(如{"_delete"=>"1", "id"=>"..."}
传递给)的哈希update_attributes
都将删除嵌套对象。
简单设置:
class Forum < ActiveRecord::Base
has_many :users
accepts_nested_attributes_for :users, :allow_destroy => true
end
class User < ActiveRecord::Base
belongs_to :forum
end
Forum.first.update_attributes("users_attributes"=>{"0"=>{"_delete"=>"1", "id"=>"42"}})
问题:我如何 - 而不是删除嵌套对象时"_delete" => "1"
- 只是删除关联?(即在上述情况下,将用户的 forum_id 设置为 nil)
额外问题:如果我还想在删除关联时更改嵌套对象的属性怎么办?(例如设置状态或时间戳)