从表中删除与数组中的数据匹配的记录?

时间:2010-03-21 19:26:23

标签: ruby-on-rails ruby rails-activerecord

我有一个包含2个字段的表格。单词和时间戳。 然后我有这个包含一些单词的数组。 如何删除表中与数组中的单词匹配的所有记录? 假设该模型被称为“Word”。

关于如何实现这一目标的任何想法?也许循环遍历数组并运行一些破坏查询。任何人都可以指点我吗?感谢

2 个答案:

答案 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 }