Как объединить два разных монгоидных критерия

В моей модели определены следующие области:

scope :upcoming, -> { where(:start_time.gt => Time.now).asc(:start_time) }
scope :in_progress, -> {
   now = Time.now
   where(:start_time.lte => now).where(:end_time.gte => now).asc(:start_time)
}

Я хочу чтобы создать другую область, которая объединяет результаты обеих областей, называемых текущими. Я пробовал что-то вроде этого :

scope :current, -> { self.in_progress | self.upcoming }

, но в итоге они обрабатываются как массивы и объединяются. Проблема в том, что когда я пытаюсь вызвать свою область с помощью Model.current, я получаю следующее сообщение об ошибке:

NoMethodError: undefined method `as_conditions' for #<Array:0xaceb008>

Это потому, что он преобразовал объект Mongoid Criteria в массив, но я этого не хочу. Я хочу, чтобы объект оставался объектом Mongoid Criteria.

Чего я действительно хочу, так это объединения текущего набора _и предстоящего набора.

Есть идеи? Спасибо.

9
задан d0nutz1 21 April 2012 в 05:14
поделиться