1

次のように、属性フラグを false に設定しようとしています。

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

(私はs_idを持っています)しかし、それはうまくいきませんでした.これもうまくいきませんでした.

Model.find(s_id).flag = false

何か助けて??

4

1 に答える 1

2

コードの問題は、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)
于 2012-04-23T23:27:57.980 に答える