Ruby on rails 3 Rails 3:有很多,在哪里

Ruby on rails 3 Rails 3:有很多,在哪里,ruby-on-rails-3,activerecord,rails-activerecord,has-many,Ruby On Rails 3,Activerecord,Rails Activerecord,Has Many,我有以下型号 class City < ActiveRecord::Base has_many :dealers end class Dealer < ActiveRecord::Base belongs_to :city end class City

我有以下型号

class City < ActiveRecord::Base
  has_many      :dealers 
end

class Dealer < ActiveRecord::Base
  belongs_to    :city
end
class City

我需要找到所有有经销商的城市。如何编写
where()
以获得所需的结果

在尝试了一些选项后,我想到了这一点

City.joins(:dealers).group("dealers.city_id")
这将返回城市的完整记录

找到更好的方法后进行编辑

还有一种更好的方法可以实现这一点,那就是使用select中的
uniq
。因此,新的查询将是

City.joins(:dealers).uniq
也就是说

SELECT DISTINCT `cities`.* FROM `cities` INNER JOIN `dealers` ON `dealers`.`city_id` = `cities`.`id`

要仅查找拥有经销商的城市,请执行以下操作:

City.joins(:dealers)

如果一个城市没有经销商,那么它将不会在结果中返回。

经销商表的属性是什么?经销商将有
city\u id
尝试使用此
city.joins(:经销商)。其中(“经销商.city\u id=?”,city.id)
获取未定义的局部变量或方法“city”
尝试此
city.joins(:经销商)。其中(“derals.city_id=?”,id)
这并没有给我不同的城市,而是给了所有的城市*所有的经销商。我需要不同的城市。