次のように、属性フラグを false に設定しようとしています。
Model.where(:s_id => s_id).flag = false
(私はs_idを持っています)しかし、それはうまくいきませんでした.これもうまくいきませんでした.
Model.find(s_id).flag = false
何か助けて??
次のように、属性フラグを false に設定しようとしています。
Model.where(:s_id => s_id).flag = false
(私はs_idを持っています)しかし、それはうまくいきませんでした.これもうまくいきませんでした.
Model.find(s_id).flag = false
何か助けて??
コードの問題は、flag
属性を変更したのに、後でドキュメントを保存していないことです。これを処理するにはさまざまな方法がありますが、そのほとんどについては、ドキュメントの持続性のセクションで詳しく説明されています。
1 つのモデルのみを更新し、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)