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

StackOverflow https://stackoverflow.com/questions/2488399

Вопрос

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

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

Это было полезно?

Решение

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

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

Другие советы

Сделай это:

Word.delete_all(:words => words_array)

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

Например:

words = ["pop", "pop alternative", "r&b"]
Word.delete_all(:words => words)
Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top