8

Tôi làm cách nào để chạy destroy_all trên một mảng?Chạy destroy_all trên một mảng?

Tôi đã có các truy vấn sau:

spam_users = User.find_by_sql("SELECT * FROM users WHERE email ~* '21cn.com'") 

Tôi đã cố gắng chạy spam_users.destroy_all nhưng tôi nhận undefined method 'destroy_all' for #<Array:0x10b09ce30>.

Tôi đang chạy Rails 2.3.8 trong ứng dụng cụ thể này cùng với PostgreSQL.

Trả lời

22

Bạn không thực thi destroy_all trên một mảng, destroy_all là một phương pháp lớp trên mô hình của bạn. Sau đây nên giết chết tất cả mọi thứ sẽ được spam_users mảng của bạn:

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

Bạn cũng có thể duyệt qua spam_users và tiêu diệt từng cái một nếu bạn đã có chúng cho các mục đích khác:

spam_users.each(&:destroy) 

Bạn có thể đặt cũng muốn điều chỉnh regex của bạn một chút:

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

Bạn cần bit E để tránh "không chuẩn sử dụng lối thoát trong một chuỗi chữ "cảnh báo về số \..

Các vấn đề liên quan