Монгоид больше даты или с нулевым

У меня две модели

class Conversation
  include Mongoid::Document 

  field :last_moderated_at, type: DateTime
  has_many :messages
end

class Message
  include Mongoid::Document
  include Mongoid::Timestamps
end

Я хочу получить список всех сообщений, которые были созданы после даты модерации, или все из них, если дата модерации равна нулю

Я ожидал, что следующее сработает

conversation.messages.where(
      :created_at.gte => conversation.last_moderated_at
    )

Но, по-видимому, сравнение с нулем не удается (когда last_moderated_at == nil)

У меня нет выбора, кроме как использовать if/else или есть оператор MongoDB типа greater than это также работает по сравнению с нулевыми датами?

2 ответа

Синтаксис правильный. Это работает на Mongoid версии 6, по крайней мере.

Я думаю, вам придется сделать что-то вроде этого:

      conversation = Conversation.find 'some_id'

Message.where(
      conversation: conversation,
      :created_at.gte => conversation.last_moderated_at
    )
Другие вопросы по тегам