2
在ActiveRecord中使用新的accepts_nested_attributes_for
時,可以使用選項: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"
- 只是刪除關聯? (即在上面的情況下,將用戶的forum_id設置爲零)
獎勵問題:如果我還想在刪除關聯時更改嵌套對象的屬性,該怎麼辦? (例如像設置的狀態或時間戳)