Pregunta

Tengo un modelo en rieles con relación one_to_many. Cuando borre al padre, me gustaría borrar todos los niños. ¿Cómo debería hacerlo? Quiero eliminar todos los pedidos y sus artículos cuando elimino un usuario

Mis modelos son:

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
¿Fue útil?

Solución

La respuesta de

jdl es correcta: debe agregar : dependen = > : destruye en ambas relaciones, es decir, en su clase Usuario , agréguelo a has_many: orders y en su clase Order , agréguelo a has_many: order_items .

También es posible que desee cambiar el comportamiento de MySQL con claves externas wrt, quizás configurándolas en ON DELETE CASCADE .

Otros consejos

Lo que está buscando es el : dependen = > : opción destruir en has_many .

has_many docs

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top