2010-03-21 9 views
7

Tengo una tabla de 2 campos. Palabra y marca de tiempo Luego tengo esta matriz que contiene algunas palabras. ¿Cómo elimino todos los registros en la tabla que coinciden con las palabras en la matriz? Supongamos que el modelo se llama "Palabra".¿Eliminar registros de la tabla que coincide con los datos en una matriz?

¿Alguna idea sobre cómo lograr esto? tal vez recorra la matriz y ejecute algunas consultas de destrucción. ¿Alguien puede dirigirme aquí? gracias

Respuesta

4

Si definió las devoluciones de llamada en el modelo bare sql no las llamará. La forma recomendada en este caso es:

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

hacer esto:

Word.delete_all(:words => words_array) 

Esto borrará los registros coincidentes con las palabras de la matriz dada, en una sentencia SQL.

ej .:

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