【问题标题】:Running destroy_all on an array?在数组上运行destroy_all?
【发布时间】:2011-09-12 03:35:13
【问题描述】:

如何在数组上运行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。

【问题讨论】:

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


    【解决方案1】:

    您不会在数组上执行 destroy_alldestroy_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$'))
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2011-10-05
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-03-08
      • 1970-01-01
      相关资源
      最近更新 更多