【发布时间】:2013-09-12 16:37:28
【问题描述】:
我创建了一个具有布尔字段的模型,但是当捕获它给我的值时,它给了我 1 或 0。我发现这是因为布尔的 BSON 类型是“\x00”和“\x01”。
所以我的问题是,我怎样才能获得该字段的“布尔”值?我是否需要在模型或控制器上执行一个方法,如果值为 1,则返回 true,如果为 0,则返回 false?或者 Mongoid 会为我做这件事吗?
Mongoid 版本: 4.0.0 38de2e9
编辑 蒙哥壳
db.feedbacks.find().limit(1).pretty()
{
"_id" : ObjectId("52290a2f56de969f8d000001"),
"like" : "1",
...
}
说明:
我用脚手架创建了一个应用程序:
rails g scaffold 反馈like:Boolean
当我插入一条新记录时,在 Mongo 中,文档保持不变。 当我做 Feedback.first 时,Model 中的字段具有“0”或“1”值。
class Feedback
include Mongoid::Document
include Mongoid::Timestamps
field :comment, type: String
field :like, type: Boolean
def isLike?
like=="1"
end
end
这是回购: https://github.com/afucher/4kFeedback/blob/master/app/models/feedback.rb
【问题讨论】:
-
您能添加您的反馈模型的代码吗?
-
已编辑,同时放入 github repo。
-
我克隆了 repo,并从 rails 控制台创建了一个反馈实例。一切正常 (
feedback=Feedback.create!(like: true) ; feedback.reload ; feedback.like #=> true) -
嗯...我想是的,就是scaffold生成的视图上的复选框=/ 复选框的值为0或1,但是我需要在控制器上处理这个??
-
您是否尝试为视图中的复选框明确指定一个值(比如说“true”或“yes”)?
标签: ruby-on-rails mongodb mongoid