2010-08-29 17 views
21

Obecnie mam dwa aktywne zapytania rekord, które chciałbym połączyć razempołączyć dwie kwerendy ActiveRecord wyniki

 
joins("join relationships ON user_id = followed_id"). 
       where("follower_id = #{user.id}") 

i

 
where(:user_id => user.id) 

Zasadniczo chcę wyniki drugiego pojawiać się z najpierw podobne do instrukcji UNION w SQL. Czy można to zrobić w ActiveRecord w ten sposób?

Wolałbym użyć unii, która musi dołączyć do wszystkich followed_id s w ciągu znaków i użyć klauzuli IN w sql.

Wszelkie pomysły?

----- Edit ------ szukam sposób, aby uzyskać to do pracy z leniwe załadunku

Odpowiedz

12

Korzystając relation & relation:

Model.joins("join relationships ON user_id = followed_id").where("follower_id = {user.id}") & Model.where(:user_id => user.id) 
+6

Wymusza to ActiveRecord, aby z niecierpliwością umieścić wyniki w tablicy. Czy można to zrobić z leniwym ładowaniem? – zzawaideh

+0

btw .. Głosowałem w górę twoją odpowiedź, ponieważ dostałem mnie tam w części drogi. – zzawaideh

+0

Nie powinna to być relacja | relacja? ActiveRecord :: Relation znachorów, takich jak tablica i [1] i [2] == [], ale [1] | [2] = [1,2]. – mtjhax

28

To był dla mnie przydatne :

Model.where(...) | Model.where(...) 
+0

Uratowałeś mnie tutaj. Dzięki kumplowi – Abram

+3

Właściwie to nie działa zgodnie z oczekiwaniami. – Abram

+15

Przekształca obiekt ActiveRecord_Relation na Array. Nie można stosować metod rekordów aktywnych, takich jak .where itp. Na wynikowych obiektach – CodeExpress

Powiązane problemy