2012-04-21 9 views
1

私はこのようにfalseに属性フラグを設定しようとしています内の属性を設定する:mongoid

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

(私はS_IDている)が、それは を動作しませんでしたし、この1つはあまりにも動作しませんでした:

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)