I tienen los siguientes ámbitos definidos en mi modelo:Cómo unión de dos criterios diferentes 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)
}
que quieren crear otro ámbito que combina los resultados de estos dos ámbitos llamados actual. He intentado algo como esto:
scope :current, -> { self.in_progress | self.upcoming }
Pero esto sólo termina tratándolos como ambas matrices y la concatenación de ellas. El problema con esto es que cuando trato de llamar a mi alcance con Model.current, me sale el siguiente mensaje de error:
NoMethodError: undefined method `as_conditions' for #<Array:0xaceb008>
Esto se debe a que convierte los Criterios MongoId se oponen a una matriz, pero no lo hacen quiero eso. Quiero que el objeto permanezca como un objeto Criterio Mongoide.
Lo que realmente quiero es la unión del conjunto in_progress y el próximo conjunto.
¿Alguna idea? Gracias.
Si desea la unión de los dos conjuntos de resultados, entonces probablemente sea mejor escribir el tercer ámbito desde cero con una consulta ': $ o'. –