Rails / ActiveRecord依赖于销毁循环

时间:2014-03-31 08:29:47

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

在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会自动删除关联的汽车,反之亦然。

1 个答案:

答案 0 :(得分:0)

您应该使用inverse_of代替dependent

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

这可能会对你有帮助。