2

ActiveRecordで新しいを使用する場合、オプション:allow_destroy => trueを使用することができます。このオプションを設定すると、{"_delete"=>"1", "id"=>"..."}のようなネストされた属性を含むハッシュがupdate_attributesに渡されると、ネストされたオブジェクトが削除されます。オブジェクトを破棄するのではなく、アソシエーションを削除する場合allow_destroy => true

シンプルなセットアップ:

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"時にネストされたオブジェクトを削除するの? (上のケースでは、フォーラムIDをユーザーに設定しないでください)

ボーナスの質問:アソシエーションを削除するときにネストされたオブジェクトのアトリビュートを変更したい場合はどうすればよいですか? (例えば、状態またはタイムスタンプを設定するなど)

答えて

2

代わり"_delete" => '1'を使用して削除するユーザーを求めての、あなただけのnested_attributesを使用して、それを更新することはできません?:

Forum.first.update_attributes("users_attributes"=> { 
    "0" => { 
    "id" => "42", 
    "forum_id" => "", 
    "state" => 'removed' 
    } 
}) 
関連する問題