Domanda

A quanto pare dipende => distruggere viene ignorato quando anche utilizzando il:. Attraverso l'opzione

Così ho questo ...

class Comment < ActiveRecord::Base
  has_many :comment_users, :dependent => :destroy
  has_many :users, :through => :comment_users
  ...
end

... ma l'eliminazione di un commento non si traduce in registrazioni comment_user associati ottenere cancellato.

Qual è l'approccio consigliato, quindi, per la cascata elimina quando si utilizza: attraverso

?

Grazie

È stato utile?

Soluzione

A quanto pare:! Dipendente non viene ignorato

Il vero problema era che mi stava chiamando Comment.delete(id) che va dritto al db, mentre ora io uso Comment.destroy(id) che carica l'oggetto commento e chiamate destroy () su di esso. Questo prende il :dependent => :destroy e tutto va bene.

Altri suggerimenti

La soluzione del manifesto originale è valida, ma ho voluto sottolineare che questo funziona solo se si dispone di una colonna ID per quella tabella. Io preferisco i miei molti-a-molti tavoli per essere solo due chiavi esterne, ma ho dovuto rimuovere il mio "ID: true" dalla definizione della tabella di migrazione per eliminare cascata al lavoro. Avendo questa funzionalità sicuramente supera non avere una colonna ID nella tabella.

Se si dispone di un'associazione polimorfica, si dovrebbe fare quello @blogofsongs detto, ma con un attributo foreign_key in questo modo:

class User < ActiveRecord::Base
  has_many :activities , dependent: :destroy, foreign_key: :trackable_id
end
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top