2010-03-21 11 views
7

Ho una tabella di 2 campi. Parola e timestamp. Quindi ho questo array che contiene alcune parole. Come faccio a cancellare tutti i record nella tabella che corrispondono alle parole nell'array? Supponiamo che il modello sia chiamato "Parola".Elimina i record dalla tabella che corrisponde ai dati in una matrice?

Qualche idea su come raggiungere questo obiettivo? magari attraversare l'array ed eseguire alcune query di distruzione. Qualcuno può dirmi qui? grazie

risposta

4

Se i callback definiti nel modello sql non li chiamano. Il metodo consigliato in questo caso è:

deletable_words = [ 'php', 'c++' ] 
objs = Word.find(:all, :conditions => [ "words.word IN (?)", deletable_words]) 
objs.each { |o| o.destroy } 
18

fare questo:

Word.delete_all(:words => words_array) 

Ciò elimina le righe corrispondenti alle parole nella matrice data, in un'istruzione SQL.

Es .:

words = ["pop", "pop alternative", "r&b"] 
Word.delete_all(:words => words) 
Problemi correlati