Как я могу сделать каскадное удаление в отношении один ко многим в Rails ActiveRecord?
У меня есть модель в rails с отношением one_to_many. Когда я удаляю отца, я хотел бы удалить всех детей. Как мне это сделать? Я хочу удалить все заказы и их элементы, когда я удаляю пользователя
Мои модели:
class User < ActiveRecord::Base
has_many :orders, :foreign_key => "id_user"
end
class Order < ActiveRecord::Base
has_many :order_items, :foreign_key => "id_pedido"
belongs_to :user, :foreign_key => "id_usuer"
end
class OrderItem < ActiveRecord::Base
belongs_to :order, :foreign_key => "id_pedido"
end
2 ответа:
Ответ Jdl верен - вам нужно добавить
:dependent => :destroy
к обоим отношениям - т. е. в вашемUser
классе добавьте его вhas_many :orders
, а в вашемOrder
классе добавьте его вhas_many :order_items
.Вы также можете изменить поведение MySQL wrt внешних ключей, возможно, установив их в
ON DELETE CASCADE
.