Tôi có phạm vi sau đây được định nghĩa trong mô hình của tôi:Làm thế nào để kết hợp hai tiêu chuẩn khác nhau 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)
}
Tôi muốn tạo ra một phạm vi kết hợp các kết quả của cả hai trong những phạm vi được gọi là hiện tại. Tôi đã thử một cái gì đó như thế này:
scope :current, -> { self.in_progress | self.upcoming }
Nhưng điều này chỉ kết thúc điều trị cả hai như mảng và ghép chúng. Vấn đề ở đây là khi tôi cố gắng gọi phạm vi của tôi với Model.current, tôi nhận được thông báo lỗi sau:
NoMethodError: undefined method `as_conditions' for #<Array:0xaceb008>
này là bởi vì nó chuyển đổi Tiêu chuẩn Mongoid phản đối một mảng, nhưng tôi không muốn điều đó. Tôi muốn đối tượng ở lại như một đối tượng Mongoid Criteria.
Điều tôi thực sự muốn là liên minh của tập hợp in_progress và bộ sắp tới.
Bất kỳ ý tưởng nào? Cảm ơn.
Nếu bạn muốn kết hợp hai tập hợp kết quả thì bạn có thể viết tốt hơn phạm vi thứ ba từ đầu bằng truy vấn ': $ hoặc'. –