2013-03-14 17 views
23

che sto cercando di fare questoaggiornamento più righe in Rails 3.2

User.find([23,45,68,123]).update_all(:is_active => true) 

ma ottengo:

NoMethodError: undefined method `update_all' for #<Array:0x00000007493778> 

Quale sarebbe la sintassi corretta? Preferirei non scorrere tra loro se non dovessi farlo.

risposta

53

find restituisce un array, quindi non è possibile utilizzare update_all.

per risolvere il problema, penso che si può utilizzare where, che restituisce un ActiveRecord::Relation, in modo che il update_all dovrebbe funzionare:

User.where(:id =>[23,45,68,123]).update_all(:is_active => true) 

http://apidock.com/rails/ActiveRecord/Relation/update_all

Spero che aiuta ...

+0

bello , grazie; ha funzionato bene – timpone

+0

ottimo +1 per quello giusto –