gpt4 book ai didi

ruby-on-rails - 当 :allow_destroy => true 时删除关联而不是销毁对象

转载 作者:行者123 更新时间:2023-12-05 04:19:08 24 4
gpt4 key购买 nike

在 ActiveRecord 中使用新的 accepts_nested_attributes_for 时,可以使用选项 :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)

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

最佳答案

与其使用 "_delete"=> '1' 要求删除用户,不如使用 nested_attributes 更新它?:

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

关于ruby-on-rails - 当 :allow_destroy => true 时删除关联而不是销毁对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1299617/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com