accepts_nested_attributes_for
ActiveRecord でnewを使用する場合、 オプション を使用できます: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 に設定します)
おまけの質問:関連付けを削除するときに、ネストされたオブジェクトの属性も変更したい場合はどうすればよいですか? (状態やタイムスタンプの設定など)