2013-03-14 12 views
23

Staram się robić toaktualizować wiele wierszy w Rails 3.2

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

ale dostaję:

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

Jaka byłaby poprawna składnia? Wolałbym nie powtarzać każdego z nich, jeśli nie muszę.

Odpowiedz

53

find zwraca tablicę, więc nie można użyć update_all.

Aby rozwiązać ten problem, myślę, że można użyć where, która zwraca ActiveRecord::Relation, więc update_all powinno działać:

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

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

Mam nadzieję, że to pomaga ...

+0

piękny , dzięki; działał dobrze – timpone

+0

świetny +1 za prawy –