2011-12-26 5 views
6

Nel mio progetto lo sconto è e appartiene a molte aziende. Ho una regola di callback associazione che uno sconto non può rimuovere il suo ultimo businss (sostenere che c'è sempre un businss per ogni sconto):Come saltare la richiamata di associazione in destroy

has_and_belongs_to_many :businesses, 
    before_remove: :check_count, 

def check_count 
    raise 'Cannot remove latest business!' if businesses.count == 1 
end 

però mi sono reso conto che non sarò in grado di rimuovere sconti . Da quando faccio lo discount.destroy, penso che proverà a rimuovere le aziende, e in termini di errore aumenterà l'errore.

Quindi c'è un modo per aggirare questo, come una sorta di :except come nei controller?

+1

Controlla qui: http://guides.rubyonrails.org/active_record_validations_callbacks.html#skipping-callbacks –

risposta

14

È possibile chiamare discount.delete che salterà i callback.

+0

Continuavo a mantenere l'integrità. Suppongo che la mia regola di callback non sia stata progettata correttamente. – lulalala