当由railsadmin创建时,在mongoid查询中忽略布尔字段

时间:2014-10-01 01:50:33

标签: ruby-on-rails mongoid rails-admin

我有一个名为Announcement的Mongoid模型:

class Announcement
  include Mongoid::Document
  include Mongoid::Timestamps

  field :message
  field :starts_at, type: DateTime
  field :ends_at, type: DateTime
  field :is_permanent, type: Boolean, default: false
end

此模型上的大部分内容似乎都运行良好:

Announcement.all.count

列出所有公告。

当我通过控制台创建通知时:

Announcement.create(is_permanent: true, message: "Hi", starts_at: "2014-09-30", ends_at: "2014-10-30")

Announcement.where(is_permanent: true).to_a会返回它:

[#<Announcement _id: 542b5cfa53696d0656010000, created_at: 2014-10-01 01:46:34 UTC, updated_at: 2014-10-01 01:46:34 UTC, message: "Hi", starts_at: nil, ends_at: nil, is_permanent: true>]

但是,当我通过RailsAdmin创建一个带布尔字段的公告时,它会被放入数据库中:

[#<Announcement _id: 542b4eae53696d0552000000, created_at: 2014-10-01 00:45:34 UTC, updated_at: 2014-10-01 01:12:07 UTC, message: "Cookies!", starts_at: nil, ends_at: nil, is_permanent: "1">]

和is_permanent是"1"

因此,查询is_permanent: true不会返回该公告。

这是rails-admin的错误吗?我的设置错过了什么吗?任何帮助/想法都赞赏。

1 个答案:

答案 0 :(得分:1)

事实证明,将Mongoid::Boolean添加到模型中会使Rails Admin插入一个mongoid布尔值,而不仅仅是&#34; boolean&#34;。

field :is_permanent, type: Mongoid::Boolean, default: false