在mongoid中设置属性

时间:2012-04-21 23:03:25

标签: ruby-on-rails-3 mongoid

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

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

(我有s_id)但它没有用 而且这个也不起作用:

Model.find(s_id).flag = false

任何帮助??

1 个答案:

答案 0 :(得分: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)