【发布时间】:2013-12-12 20:02:18
【问题描述】:
鉴于以下情况:
class Foo < ActiveRecord::Base; end
class Bar < Foo; end
class Baz < Foo; end
当带有has_many :foos 的类被删除时,是否有一种“Rails'y”方式来取消所有Bars 和Bazs 的外键?这似乎不起作用:
class Quux < ActiveRecord::Base
has_many :foos, dependent: :nullify
end
我意识到我可以在 before/after_destroy 回调中执行此操作,但我想知道是否有更规范的方式来执行此操作。谢谢!
更新
我目前的解决方案:
class Quux < ActiveRecord::Base
after_destroy :nullify_foos
private
def nullify_foos
Foo.where(quux_id: id).update_all(quux_id: nil)
end
end
或
# (results in two queries?)
class Quux < ActiveRecord::Base
has_many :bars, dependent: :nullify
has_many :bazs, dependent: :nullify
end
【问题讨论】:
标签: ruby-on-rails ruby ruby-on-rails-3 activerecord sti