【问题标题】:Why Mongoid doesn't save boolean as true or false?为什么 Mongoid 不将布尔值保存为真或假?
【发布时间】:2013-09-06 11:44:40
【问题描述】:

我有一个带有 RoR 和 Mongoid 的应用程序,并且我在文档中有一个布尔字段。但是当我保存文档并查看 mongo 时,它返回 0 或 1。

为什么mongoid不保存真假?有什么原因吗?

我尝试在 mongoid 的文档中找到它,但没有成功...

【问题讨论】:

    标签: mongoid


    【解决方案1】:

    True 和 False 值在BSON spec 上分别为“\x00”和“\x01”,因为 mongoid 使用 BSON 协议将对象传递给 mongodb,true 和 false 被转换为 0 和 1。您可以看到代码在这里https://github.com/mongodb/bson-ruby/blob/master/lib/bson/true_class.rb#L25

    【讨论】:

    • 那么,如果我想得到一个布尔值,我需要在我的模型中做一个返回它的方法吗?例如:isLike?
    • 实际上并非如此......您的模型应该已经返回一个布尔值。 Mongoid 应该能够将 0 和 1 值格式化为 false 和 true..
    • 你知道我是怎么做到的吗?因为我有一个布尔字段 'like',如果我输入 :like 它会返回 0 或 1
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-03-26
    • 1970-01-01
    • 2011-01-02
    • 1970-01-01
    • 1970-01-01
    • 2012-11-16
    相关资源
    最近更新 更多