UNION/INTERSECT w find

Chciałbym wysłać do bazy zapytanie o następującym schemacie:

(SELECT items.* FROM items WHERE blablablabla ) UNION (SELECT items.* FROM items WHERE blablablabla )
Choć ze schematu nie wynika, jakoby był tu potrzebny UNION, to w rzeczywistości potrzebny on jest. Obecnie realizuję to zapytanie poprzez find_by_sql. Ze względów bezpieczeństwa chciałbym jednak, żeby pytanie to było obsługiwane przez zwykłe find. Ale: jak za pomocą find wygenerować “UNION”? Czy jest to w ogóle możliwe?
Niestety, nie mogę wykonać dwóch osobnych findowych zapytań, a potem ich skonkatenować, ponieważ wyniki tego wyszukiwania są paginowane, a przypadku paginacji konkatenacja nie wchodzi w grę (chyba, że się mylę? Item.paginate(blabla).concat(Item.paginate(blabla)??? bez sensu).

100%, że nie da się zrobić WHERE blabla OR asdasdasd? Bo w samym find chyba się nie da zrobić UNIONa dwóch SELECTów. Chyba, że Item.find()+Item.find, ale dalej z tym nie zrobi się nic łatwo, żeby skorzystać z paginate.

  1. find_by_sql nie jest chyba aż tak niebezpieczne :wink:

  2. Nie znam sposobu użycia UNION za pomocą ‘finderów’ railsowych

  3. Może paginate_by_sql rozwiąże Twoje dylematy?

http://railsforum.com/viewtopic.php?id=23688

z drugiej strony - jeśli sam projektujesz bazę dancyh to nie byłoby dobrze wrzucić te dane do jednej tabeli i dziedziczyć modele?