同じテーブル内の 2 つの個別のフィールドを検索するクエリがあります...特定の都市である可能性が最も高い場所を探していますが、国でもある可能性があります...つまり、2 つのフィールドが必要です。
表は次のようになります。
Country City
Germany Aachen
USA Amarillo
USA Austin
結果:
Keyword Sideinfo
Aachen Germany
USA Country
Austin USA
Germany Country
基本的に、これを行うためのより簡潔な方法があるかどうか疑問に思っています.2つの別々のクエリを使用し、それらを一緒に追加したり、並べ替えたりする必要があったためです(これは正常に機能します):
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
ActiveRecord を使用して結合する方法に関する情報が見つかりませんでした...