如何在阵列上运行destroy_all
?
我有以下查询:
spam_users = User.find_by_sql("SELECT * FROM users WHERE email ~* '21cn.com'")
我已尝试投放spam_users.destroy_all
,但我得到undefined method 'destroy_all' for #<Array:0x10b09ce30>
。
我在这个特定的应用程序中运行Rails 2.3.8以及PostgreSQL。
答案 0 :(得分:26)
您不在数组上执行destroy_all
,destroy_all
是模型上的类方法。以下内容应该会杀死你spam_users
数组中的所有内容:
User.destroy_all("email ~* '21cn.com'")
你也可以迭代spam_users
并逐个销毁它们,如果你已经将它们用于其他目的:
spam_users.each(&:destroy)
您可能还需要稍微调整一下正则表达式:
User.destroy_all("email ~* '21cn\\.com$'")
这样你就可以找到文字.
而不是“任何字符”并将其锚定到字符串的末尾。您还可以使用%q(...)
引用的字符串来减少转义:
User.destroy_all(%q(email ~* '21cn\.com$'))