У меня есть таблица из 2 полей. Слово и метка времени. Тогда у меня есть этот массив, который содержит несколько слов. Как удалить все записи в таблице, которые соответствуют словам в массиве? Предположим, что модель называется «Слово».
Есть идеи, как этого добиться? возможно перебрать массив и выполнить несколько запросов уничтожения. Кто-нибудь может направить меня сюда? спасибо
Сделайте это:
Word.delete_all(:words => words_array)
Это удалит строки, соответствующие словам в данном массиве, в ОДНОМ операторе SQL.
например:.
words = ["pop", "pop alternative", "r&b"] Word.delete_all(:words => words)
Если вы определили обратные вызовы на модели, то sql не будет их вызывать.Рекомендуемый способ в этом случае:
deletable_words = [ 'php', 'c++' ] objs = Word.find(:all, :conditions => [ "words.word IN (?)", deletable_words]) objs.each { |o| o.destroy }