Удалите записи из таблицы, которая соответствует данным в массиве?

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

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

7
задан tereško 9 February 2013 в 20:18
поделиться

2 ответа

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

deletable_words = [ 'php', 'c++' ]
objs = Word.find(:all, :conditions => [ "words.word IN (?)",  deletable_words])
objs.each { |o| o.destroy }
4
ответ дан 6 December 2019 в 08:14
поделиться

Сделайте следующее:

Word.delete_all(:words => words_array)

Это удалит строки, соответствующие словам в данном массиве, в ОДНОМ операторе SQL.

Например:

words = ["pop", "pop alternative", "r&b"]
Word.delete_all(:words => words)
18
ответ дан 6 December 2019 в 08:14
поделиться
Другие вопросы по тегам:

Похожие вопросы: