我在我的模型中定义了以下范围:如何联合两个不同的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