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)
这并没有给我不同的城市,而是给了所有的城市*所有的经销商。我需要不同的城市。