我试图将属性标志设置为false,如下所示:
Model.where(:s_id => s_id).flag = false
(我有s_id)但它没有用 而且这个也不起作用:
Model.find(s_id).flag = false
任何帮助??
答案 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)