我在我的模型中定義了以下範圍:如何聯合兩個不同的Mongoid標準
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對象。
我真正想要的是in_progress集合和即將到來的集合的結合。
任何想法?謝謝。
如果你想要兩個結果集的聯合,那麼你最好使用':$或'查詢從頭開始編寫第三個作用域。 – 2012-04-21 05:26:26