如何在Rails 3中组合这两个查询?

时间:2013-05-15 09:02:17

标签: ruby-on-rails ruby-on-rails-3 activerecord

在我的视图中,我需要显示一个列表,其中包含每个城市的名称以及每个名称下方该区域(城市服务)中的可用服务。这涉及两个查询。但是,我如何将它们组合起来并显示这个简单的列表呢?

模特......

class City < ActiveRecord::Base
   has_many :city_services, :dependent => :delete_all
end

class CityService < ActiveRecord::Base
   belongs_to :city
end

控制器......这是我需要帮助的地方。

@county = params[:county]
@city_ids = City.where("county = ?", @county).map { |c| c.id }
@city_services = CityService.where( :city_id => @city_ids )

但是,每个城市都有多种服务,所以我不能只列出city_services,或者多次列出城市。

1 个答案:

答案 0 :(得分:2)

试试这个(我假设城市表被称为城市):

@city_services = CityService.joins(:city).where(cities: {country: params[:country]})

如果你想要一个不同的清单:

@city_services = CityService.joins(:city).where(cities: {country: params[:country]}).uniq