Ale*_*lex 6 boolean ruby-on-rails toggle mongodb mongoid
我正在使用Rails和mongoid与mongodb一起工作.
使用Active:Record时,通常在rails中,您可以访问方法.toggle!它只允许您反转数据库中布尔字段的值.
不幸的是,这种方法不适用于mongoDB:
user = User.first
user.toggle!(:admin)
NoMethodError: undefined method `toggle!' for #<User:0x00000100eee700>
Run Code Online (Sandbox Code Playgroud)
这是不幸的......而且愚蠢到我没有看到如何在没有复杂代码的情况下出行......
关于如何简明扼要地获得相同结果的任何建议?
谢谢,
亚历克斯
PS:还存在的问题之一是,当我要修改字段,它经历再次验证...并且它要求的:密码,我不会在数据库保存,那么:
User.first.admin = !User.first.admin
Run Code Online (Sandbox Code Playgroud)
甚至不会工作:(
这里的问题特别是mongoid,而不是mongodb.toggle!是ActiveRecord :: Base的一部分,但幸运的是,它并不难复制.
def toggle!(field)
send "#{field}=", !self.send("#{field}?")
save :validation => false
end
Run Code Online (Sandbox Code Playgroud)
将其添加到模型中(或将其添加到模块中,并将其包含在模型中),您的Mongoid模型将获得与您在AR中习惯相同的功能.它将读取字段的值,反转它,写入它(通过setter,根据toggle!文档),然后保存文档,绕过验证.
| 归档时间: |
|
| 查看次数: |
1405 次 |
| 最近记录: |