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

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

相关文章:

xml - Base64 XML 二进制内容

c# - 如何使用 C# System.Diagnostics.Process 与提示交互?

visual-studio - Visual Studio 调试菜单不可见

asp.net-mvc - Visual Studio 智能感知无法在一个 .ascx 文件中工作

latex - 如何编辑 BibTeX .bst FUNCTION {format.names}?

geolocation - 地理编码 - 将多个地址分组到主要城市

php - 将 curl stdout 捕获到 PHP 中的变量中

tinymce - 使用 tinymce,你必须处理 html 标记吗?

ruby-on-rails - ActionMailer 和 Exchange

ruby-on-rails - 通过 ActiveRecord Create 从文件加载二进制数据