В Rails 3.2.x, следующие прекрасно работали:Rails/ActiveRecord зависимый уничтожить петлю
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' вместо' dependency ', Rails знает, что нужно удалить связанные модели? –
Да! оно делает. Он работает для обоих направлений. –
Nope :(, не работает ... Но похоже, что я должен использовать 'inverse_of' вообще. –