Рельсы зависят от уничтожения всех

Как создать каскад удаления в Rails?

У меня есть эти модели:

class UploadFile < ActiveRecord::Base
   has_many :purchases, dependent: :delete_all
end

class Purchase < ActiveRecord::Base
    has_many :purchasers,   dependent: :delete_all
    has_many :items,        dependent: :delete_all
    has_many :merchants,    dependent: :delete_all

    has_one :upload_file
end

class Item < ActiveRecord::Base
end 

class Item < ActiveRecord::Base
end 

class Item < ActiveRecord::Base
end

Когда я удалю upload_file, будут уничтожены только данные покупки. Остальные все еще существуют в БД.

Что я делаю неправильно?


person LucasMelo    schedule 07.09.2014    source источник


Ответы (1)


Вы должны использовать здесь destroy_all, а не delete_all.

Из дока API:

destroy_all(conditions = nil) public

Уничтожает записи, соответствующие условиям, путем создания экземпляра каждой записи и вызова ее метода уничтожения. Выполняются обратные вызовы каждого объекта (включая параметры ассоциации :depend и методы before_destroy/after_destroy Observer).

person Anthony    schedule 08.09.2014