Ich habe folgende Bereiche in meinem Modell definiert:Wie Vereinigung zwei verschiedene Mongoid Kriterien
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)
}
ich einen anderen Bereich erstellen möchten, die die Ergebnisse von diesen beiden Bereiche genannt Strom kombiniert. Ich habe versucht, so etwas wie dieses:
scope :current, -> { self.in_progress | self.upcoming }
Aber dies nur landet sie beide wie Arrays Behandlung und verketten sie. Das Problem dabei ist, dass wenn ich versuche, mit Model.current meinen Rahmen zu nennen, ich die folgende Fehlermeldung erhalten:
NoMethodError: undefined method `as_conditions' for #<Array:0xaceb008>
Dies ist, weil es die Mongoid Criteria-Objekt in ein Array umgewandelt, aber ich weiß nicht will das. Ich möchte, dass das Objekt als Mongoid-Kriterium-Objekt bleibt.
Was ich wirklich will, ist die Vereinigung des in_progress Sets und des kommenden Sets.
Irgendwelche Ideen? Vielen Dank.
Wenn Sie die Vereinigung der beiden Ergebnismengen wollen, dann ist es wahrscheinlich besser, den dritten Bereich von Grund auf mit einer ': $ oder' Abfrage zu schreiben. –