在ActiveRecord中使用新的accepts_nested_attributes_for
时,可以使用选项:allow_destroy => true
。设置此选项后,包含传递给{"_delete"=>"1", "id"=>"..."}
的{{1}}等嵌套属性的任何哈希都将删除嵌套对象。
简单设置:
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"}})
时删除嵌套对象 - 只需删除关联? (即在上述情况下,将用户的forum_id设置为nil)
加分问题:如果我还想在删除关联时更改嵌套对象的属性,该怎么办? (例如设置状态或时间戳)
答案 0 :(得分:2)
不是要求使用"_delete" => '1'
删除用户,您是否可以使用nested_attributes更新它?:
Forum.first.update_attributes("users_attributes"=> {
"0" => {
"id" => "42",
"forum_id" => "",
"state" => 'removed'
}
})