2010-03-21 4 views
7

У меня есть таблица из 2 полей. Слово и временная метка. Тогда у меня есть этот массив, который содержит несколько слов. Как удалить все записи в таблице, которые соответствуют словам в массиве? Предположим, что модель называется «Слово».Удалить записи из таблицы, которая соответствует данным в массиве?

Любые идеи о том, как достичь этого? возможно, цикл через массив и запустить некоторые запросы на уничтожение. Может ли кто-нибудь направить меня сюда? спасибо

ответ

4

Если вы определили обратные вызовы на модели, то голый sql их не будет называть. Рекомендуемый способ в данном случае:

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

ли это:

Word.delete_all(:words => words_array) 

Это удалит строки, соответствующие слова в данном массиве в одном SQL заявление.

т.д .:

words = ["pop", "pop alternative", "r&b"] 
Word.delete_all(:words => words) 
Смежные вопросы