我有一个包含2个字段的表格。单词和时间戳。 然后我有这个包含一些单词的数组。 如何删除表中与数组中的单词匹配的所有记录? 假设该模型被称为“Word”。
关于如何实现这一目标的任何想法?也许循环遍历数组并运行一些破坏查询。任何人都可以指点我吗?感谢
答案 0 :(得分:18)
这样做:
Word.delete_all(:words => words_array)
这将在ONE SQL语句中删除与给定数组中的单词匹配的行。
E.g:
words = ["pop", "pop alternative", "r&b"]
Word.delete_all(:words => words)
答案 1 :(得分:4)
如果你在模型上定义了回调,那么裸sql就不会调用它们。在这种情况下推荐的方法是:
deletable_words = [ 'php', 'c++' ]
objs = Word.find(:all, :conditions => [ "words.word IN (?)", deletable_words])
objs.each { |o| o.destroy }