1
私はこのようにfalseに属性フラグを設定しようとしています内の属性を設定する:mongoid
Model.where(:s_id => s_id).flag = false
(私はS_IDている)が、それは を動作しませんでしたし、この1つはあまりにも動作しませんでした:
Model.find(s_id).flag = false
ヘルプがありますか?
私はこのようにfalseに属性フラグを設定しようとしています内の属性を設定する:mongoid
Model.where(:s_id => s_id).flag = false
(私はS_IDている)が、それは を動作しませんでしたし、この1つはあまりにも動作しませんでした:
Model.find(s_id).flag = false
ヘルプがありますか?
コードの問題は、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)