在以下情况下删除assosiation而不是销毁对象:allow_destroy =>真正

时间:2009-08-19 12:29:08

标签: ruby-on-rails activerecord associations nested-attributes

在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)

加分问题:如果我还想在删除关联时更改嵌套对象的属性,该怎么办? (例如设置状态或时间戳)

1 个答案:

答案 0 :(得分:2)

不是要求使用"_delete" => '1'删除用户,您是否可以使用nested_attributes更新它?:

Forum.first.update_attributes("users_attributes"=> { 
  "0" => {
    "id" => "42",
    "forum_id" => "",
    "state" => 'removed'
  }
})