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

Max*_*xsy 7 ruby ruby-on-rails rails-activerecord

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

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

Har*_*tty 18

做这个:

Word.delete_all(:words => words_array)
Run Code Online (Sandbox Code Playgroud)

这将在ONE SQL语句中删除与给定数组中的单词匹配的行.

例如:

words = ["pop", "pop alternative", "r&b"]
Word.delete_all(:words => words)
Run Code Online (Sandbox Code Playgroud)


cly*_*yfe 4

如果您在模型上定义了回调,则裸 SQL 将不会调用它们。这种情况下推荐的方式是:

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