Come posso cancellare una cascata in una relazione one_to_many in Rails ActiveRecord?
-
05-07-2019 - |
Domanda
Ho un modello in rotaie con una relazione one_to_many. Quando cancello il padre, vorrei cancellare tutti i bambini. Come dovrei farlo? Voglio eliminare tutti gli ordini e i relativi articoli quando elimino un utente
I miei modelli sono:
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
Soluzione
La risposta di jdl è corretta - devi aggiungere : dipendente = > : distruggere
in entrambe le relazioni, ad esempio nella classe Utente
, aggiungerlo a has_many: ordini
e nella classe Ordine
, aggiungilo a has_many: order_items
.
Potresti anche voler cambiare il comportamento di MySQL con le chiavi esterne, magari impostandole su ON DELETE CASCADE
.
Altri suggerimenti
Quello che stai cercando è il : dipendente = > : opzione distruggere
su has_many
.
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow