2014-04-23 3 views
7

Ich brauche Union von zwei ActiveRecord::Relation Objekte in einer Weise, dass das Ergebnis sollte eine andere aktive Datensatz-Beziehung sein. Wie kann ich das erreichen?Union von zwei aktiven Datensatzrelationen sollte ein weiterer aktiver Rekord in Ruby auf Schienen

+0

‚Vereinigung von zwei aktiven Aufzeichnungen‘ bedeuten? – Nithin

+0

Ich habe zwei aktive Datensätze für dasselbe Modell, aber mit unterschiedlichen Datensätzen. Ich möchte beide dieser aktiven Datensätze kombinieren und das Ergebnis sollte ein weiterer aktiver Datensatz sein. Beantwortet das deine Frage? – MayankS

+0

Sie müssen einen Code eingeben, von dem Sie ausgehen können, sonst haben die Leute keine Ahnung, wie Sie helfen können. – kddeisz

Antwort

7

Update für Rails 5

ActiveRecord jetzt bringt eine integrierte Unterstützung für UNION/OR Anfragen! Jetzt können Sie (die folgenden Beispiele genommen werden, wie sie ist, von this nice post Stellen Sie sicher, dass Sie den vollständigen Beitrag für mehr Tricks und Einschränkungen lesen.):

Post.where(id: 1).or(Post.where(title: 'Learn Rails')) 

oder kombinieren mit having:

posts.having('id > 3').or(posts.having('title like "Hi%"')) 

oder auch mit Bereichen mischen:

Post.contains_blog_keyword.or(Post.where('id > 3')) 

Ursprüngliche Antwort folgt

Ich glaube nicht, dass AR eine Union-Methode bietet. Sie können entweder Raw SQL ausführen und die UNION von SQL verwenden oder die zwei verschiedenen Abfragen ausführen und die Ergebnisse in Rails zusammenführen.

Alternativ können Sie einen Blick in diesem kundenspezifischen „Hacks“ nehmen: ActiveRecord Query Union oder https://coderwall.com/p/9hohaa

+0

Dies hilft, danke! – MayankS

+0

@rkon Könnten Sie bitte ein Beispiel dafür geben, wie Sie die Ergebnisse in Rails "zusammenführen"? Vielen Dank. – Marklar

+0

Er meint 'Ruby', verbinde die beiden Arrays in' Ruby' mit dem Vereinigungsoperator '|' – Volte

Verwandte Themen