rails union hack, jak połączyć dwa różne zapytania
Mam zapytanie, które wyszukuje dwa oddzielne pola w tej samej tabeli ... szukając lokalizacji, które najprawdopodobniej są konkretnym miastem, ale mogą też być krajem ... tzn. Potrzebą dwóch pól.
Tabela wygląda następująco:
Country City
Germany Aachen
USA Amarillo
USA Austin
Wynik:
Keyword Sideinfo
Aachen Germany
USA Country
Austin USA
Germany Country
Zasadniczo zastanawiam się, czy istnieje bardziej zwięzły sposób, aby to zrobić, ponieważ musiałem użyć dwóch oddzielnych zapytań, a następnie dodać je razem, posortować itp. (Co działa dobrze):
def self.ajax(search)
countries = Location.find(:all, :select=> 'country AS keyword, "Country" AS sideinfo', :joins => :hotels, :conditions => [ 'hotels.email IS NOT NULL AND country LIKE ?', "#{search}%" ], :group => :country )
cities = Location.find(:all, :select=> 'city AS keyword, country AS sideinfo', :joins => :hotels, :conditions => [ 'hotels.email IS NOT NULL AND city LIKE ?', "#{search}%" ], :group => :city )
out = cities + countries
out = out.sort { |a,b| a.keyword <=> b.keyword }
out.first(8)
end
Nie mogłem znaleźć żadnych informacji o tym, jak używać związków ActiveRecord ...