在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会自动删除关联的汽车,反之亦然。
答案 0 :(得分:0)
您应该使用inverse_of
代替dependent
http://api.rubyonrails.org/classes/ActiveRecord/Associations/ClassMethods.html
http://apidock.com/rails/ActiveRecord/Associations/ClassMethods/belongs_to
这可能会对你有帮助。