1

我正在尝试将属性标志设置为 false,如下所示:

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

(我有 s_id)但它没有用,这个也没有用:

Model.find(s_id).flag = false

有什么帮助吗??

4

1 回答 1

2

您的代码的问题是您更改了flag属性,但之后没有保存文档。有很多不同的方法可以处理这个问题,其中大部分在文档的持久性部分中有详细说明。

如果您只更新一个模型,并且您有 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 回答