Удалить записи из таблицы, которые соответствуют данным в массиве?
-
21-09-2019 - |
Вопрос
У меня есть таблица из 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)
Не связан с StackOverflow