【问题标题】:Rails/ActiveRecord dependent destroy loopRails/ActiveRecord 依赖销毁循环
【发布时间】:2014-03-31 08:29:46
【问题描述】:

在 Rails 3.2.x 中,以下工作正常:

class Engine < ActiveRecord::Base
  has_one :car, dependent: :destroy
end
class Car < ActiveRecord::Base
  belongs_to :engine, dependent: :destroy
  belongs_to :owner
end
class Owner < ActiveRecord::Base
  has_one :car, dependent: :destroy
end

如果我打电话给owner.destroy,它会删除那个车主、它的车和那个车的引擎。我升级到 Rails 4,不幸的是,引擎和汽车之间出现了无限循环。我假设是因为当汽车试图被删除时,Rails 首先删除它的引擎。然后在尝试删除引擎时,Rails 首先尝试删除其汽车..

如何在 Rails 4 中处理这个问题?我希望能够删除所有者,Rails/ActiveRecord 会自动删除关联的汽车和引擎。或者我可以删除一个引擎,Rails 会自动删除关联的汽车,反之亦然。

【问题讨论】:

    标签: ruby-on-rails ruby-on-rails-3 activerecord ruby-on-rails-4 rails-activerecord


    【解决方案1】:

    您应该使用inverse_of 而不是dependent

    http://api.rubyonrails.org/classes/ActiveRecord/Associations/ClassMethods.html
    http://apidock.com/rails/ActiveRecord/Associations/ClassMethods/belongs_to
    

    这可能会对你有所帮助。

    【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-11-26
    • 2013-01-22
    • 2015-06-01
    相关资源
    最近更新 更多