2017-10-04 10 views
0

Ich habe zwei Modelle, die zum selben Modell gehören. Ich möchte alle passenden Eltern in beiden Modellen in einer Abfrage finden, wenn möglich.Verketten von ActiveRecord-Abfragen von verschiedenen Modellen

Im Moment mache ich das:

locations = [1,2,3] 
flight_results = self.flights.where(from_id: locations).or(self.flights.where(to_id: locations)) 
waypoint_results = self.waypoints.where(location_id: locations) 
search_results = flight_results + waypoint_results 
search_results 

Die oben gibt ein Array zurück, sondern wegen einer Paginierung Juwel, das ich verwende, ich brauche eine ActiveRecord_AssociationRelation zurückzukehren.

Ist das möglich?

+1

Wenn die beiden Modelle unterschiedlich sind, können Sie das nicht tun. Aber du kannst ein Array paginieren, wenn du 'Kaminari' verwendest https://github.com/kaminari/kaminari#paginating-a-generic-array-object – MurifoX

+1

Was' WillPaginate' betrifft, weiß ich nicht – MurifoX

+0

I ' m benutze 'Kaminari' und bekomme die Ausnahme' undefinierte Methode 'page 'für # ' Obwohl, ich denke, das Lesen der' Kaminari'-Dokumentation wäre eine großartige Idee gewesen ... – Arel

Antwort

2

Sie können nicht zwei verschiedene Objekte zusammenführen, daher können Sie nicht zwei verschiedene Sammlungen von Objekten zusammenführen. Sie müssen ein Array verwenden (außer wenn Ihre Flüge und Wegpunkte tatsächlich Relationen desselben Modells sind?)

ABER Sie können ein Array in Ihrem Paginierungssystem verwenden. Sowohl Kaminari als auch will_paginate stellen Methoden zur Verfügung.

Wich Paginierung gem Sie verwenden?

+1

Kaminari. Lesen Sie jetzt die Dokumente. – Arel

Verwandte Themen