Rails/ActiveRecord dependent destroy loop



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

你应该使用inverse_of而不是dependent

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

这可能会对您有所帮助。

相关内容

  • 没有找到相关文章

最新更新