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 ...

Antworten auf die Frage(4)

Ihre Antwort auf die Frage