8

如何在陣列上運行destroy_all在數組上運行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>

我在這個特殊的應用程序和PostgreSQL中運行Rails 2.3.8。

回答

22

您不對數組執行destroy_alldestroy_all是模型上的類方法。下面應該殺死一切都在你的spam_users陣列:

User.destroy_all("email ~* '21cn.com'") 

你也可以遍歷spam_users並摧毀他們一個接一個,如果你已經有了用於其他目的:

spam_users.each(&:destroy) 

你可能要調整你的正則表達式一點,以及:

User.destroy_all("email ~* E'21cn\.com$'") 

你需要的E位,避免了「非標準在字符串文字中使用轉義「關於\.的警告。