Comment puis-je supprimer une cascade dans une relation one_to_many dans Rails ActiveRecord?
-
05-07-2019 - |
Question
J'ai un modèle en rails avec une relation one_to_many. Lorsque je supprime le père, je souhaite supprimer tous les enfants. Comment devrais-je le faire? Je veux supprimer toutes les commandes et ses articles lorsque je supprime un utilisateur
Mes modèles sont:
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
La solution
jdl est correcte - vous devez ajouter : depend = = > : détruisez
des deux relations - dans votre classe Utilisateur
, ajoutez-le à has_many: orders
et à votre classe Order
, ajoutez-le à has_many: éléments_de_commande
.
Vous pouvez également modifier le comportement de MySQL vis-à-vis des clés étrangères, en les définissant éventuellement sur ON DELETE CASCADE
.
Autres conseils
Ce que vous recherchez, c'est le : depend = = gt; : option de destruction
sur has_many
.