Rails Union Hack, wie man zwei verschiedene Abfragen zusammenzieht
Ich habe eine Abfrage, die zwei separate Felder in derselben Tabelle durchsucht ... und nach Orten sucht, bei denen es sich höchstwahrscheinlich um eine bestimmte Stadt handelt, die aber auch ein Land sein kann ... dh, zwei Felder werden benötigt.
Tabelle sieht aus wie:
Country City
Germany Aachen
USA Amarillo
USA Austin
Ergebnis:
Keyword Sideinfo
Aachen Germany
USA Country
Austin USA
Germany Country
Grundsätzlich frage ich mich, ob es einen präziseren Weg gibt, dies zu tun, da ich zwei separate Abfragen verwenden musste, um sie dann zu addieren, zu sortieren usw. (was gut funktioniert):
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
Ich konnte keine Informationen darüber finden, wie Gewerkschaften ActiveRecord verwenden können ...