2012-04-21 24 views
1

我想要的屬性標誌設置爲false,像這樣的屬性:設置在mongoid

Model.where(:s_id => s_id).flag = false 

(我S_ID),但它沒有工作 ,這一次沒有工作過:

Model.find(s_id).flag = false 

任何幫助?

回答

2

您的代碼存在的問題是您已更改flag屬性,但之後未保存該文檔。有很多不同的方法可以處理這個問題,其中大部分內容詳見persistence section of the documentation

如果你只更新一個模型,你有ID,你可以使用update_attribute方法:

Model.find(id).update_attribute(:flag, false) 

update_attribute方法更新屬性(明顯),但隨後也對文件要求save ,堅持數據庫中的更改。你可以做的很長的路要走實現這一點:或者

m = Model.find(id) 
m.flag = false 
m.save 

,如果你想更新一組模型,從標準(如where法),你可以使用update_all

Model.where(:flag => true).update_all(:flag => false)