3

多的對象可能是這樣的:update_attributes方法與mongoid

@users = User.criteria.for_ids(params[:user_ids]) 
@users.update_all(:suspend => true) 

代替:

for u in @users 
u.suspend = true 
u.update_attributes 
end 

回答

5

看看這個:

# Updating one record: 
Person.update(15, :user_name => 'Samuel', :group => 'expert') 

# Updating multiple records: 
people = { 1 => { "first_name" => "David" }, 2 => { "first_name" => "Jeremy" } } 
Person.update(people.keys, people.values) 

這裏看到:http://apidock.com/rails/ActiveRecord/Base/update/class

如果驗證通過,則更新一個對象(或多個對象)並將其保存到數據庫。無論對象是否成功保存到數據庫,都會返回結果對象。

你的情況:

User.update(params[:user_ids], :suspend => true) 

希望這有助於!

+0

謝謝ActiveRecords?問題是與Mongoid ... – hyperrjas

+0

Arf,沒有注意到,對不起...:/ – MrYoshiji

3

只要for_ids方法返回一個標準(而不是數組),您可以使用update_all

@users = User.criteria.for_ids(params[:user_ids]) 
@users.update_all(:suspend => true) 

update_all呼叫被轉換到一個set電話。有關更多詳細信息,請參閱documentation

相關問題