2014-10-01 1 views
3

У меня есть модель Mongoid под названием Объявление:Логическое поле игнорируется в Mongoid запросе, когда созданный railsadmin

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 is "1".

В результате запрос is_permanent: true не возвращает это объявление.

Это ошибка с rails-admin? Я что-то пропустил с помощью моей настройки? Любая помощь/мысли оценили.

ответ

1

Оказывается, что добавление Mongoid::Boolean к вашей модели сделает Rails Admin вставить mongoid boolean, а не просто «boolean».

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