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_allを配列に対して実行しないでください。destroy_allは、モデルのクラスメソッドです。

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

あなたは既に他の目的のためにそれらを持っていた場合にも、spam_usersを反復処理し、それらを一つずつ破壊する可能性:以下のすべてがあなたのspam_users配列になります殺す必要があります

spam_users.each(&:destroy) 

あなたは可能性がありますビットだけでなく、あなたの正規表現を調整したい:

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

あなたは「非標準のを避けるためにEビットが必要になります文字列リテラルでのエスケープの使用 "についての警告\.

関連する問題