8

Come posso eseguire destroy_all su un array?In esecuzione destroy_all su un array?

Ho la query seguente:

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

Ho provato a correre spam_users.destroy_all ma ottengo undefined method 'destroy_all' for #<Array:0x10b09ce30>.

Sto eseguendo Rails 2.3.8 in questa particolare app insieme a PostgreSQL.

risposta

22

Non si esegue destroy_all su un array, destroy_all è un metodo di classe sui modelli. Il seguente dovrebbe uccidere tutto sarebbe nel vostro spam_users array:

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

Si potrebbe anche iterare spam_users e distruggerli uno ad uno se hai già li per altri scopi:

spam_users.each(&:destroy) 

Potrebbero per regolare la vostra regex un po 'così:

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

avrete bisogno del bit E per evitare una "non standard uso di escape in una stringa letterale "avviso sullo \..