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
È stato utile?

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 .

has_many docs

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top