Tôi có truy vấn tìm kiếm hai trường riêng biệt trong cùng một bảng ... tìm kiếm các vị trí có khả năng nhất là thành phố cụ thể, nhưng cũng có thể là quốc gia ... tức là sự cần thiết cho hai lĩnh vực.rails union hack, cách lấy hai truy vấn khác nhau cùng nhau
Bảng trông giống như:
Country City
Germany Aachen
USA Amarillo
USA Austin
Kết quả:
Keyword Sideinfo
Aachen Germany
USA Country
Austin USA
Germany Country
Về cơ bản tôi đang tự hỏi nếu có một cách ngắn gọn hơn để làm điều này vì tôi đã phải sử dụng hai truy vấn riêng biệt sau đó thêm chúng cùng nhau, sắp xếp chúng, v.v. (hoạt động tốt):
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
Tôi không thể tìm thấy bất kỳ thông tin nào về cách các công đoàn sử dụng ActiveRecord ...
Câu hỏi này ngắt cusses cách để sử dụng hoặc các công đoàn giả trong ActiveRecord: http://stackoverflow.com/questions/6686920/activerecord-query-union –