Ho il seguente ambiti definiti nel mio modello:Come unione di due diversi criteri di 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)
}
voglio creare un altro ambito che combina i risultati di entrambi questi ambiti di corrente chiamata. Ho provato qualcosa di simile:
scope :current, -> { self.in_progress | self.upcoming }
Ma questo appena finisce trattarli entrambi gli array come e concatenando. Il problema di questo è che quando provo a chiamare il mio scopo con Model.current, ricevo il seguente messaggio di errore:
NoMethodError: undefined method `as_conditions' for #<Array:0xaceb008>
Questo perché convertito i criteri Mongoid oggetto ad un array, ma non lo faccio voglio quello. Voglio che l'oggetto rimanga come un oggetto Criteria Mongoide.
Quello che voglio veramente è l'unione del set in_progress e del set imminente.
Qualche idea? Grazie.
Se si desidera l'unione dei due set di risultati, è preferibile scrivere da zero il terzo ambito utilizzando una query ': $ o'. –