我有一个route
模型
class Route < ActiveRecord::Base
has_many :etapes
acts_as_mappable :through => :steps
end
和一个step
(包含纬度和LGN)
class Step ActiveRecord::Base
belongs_to :route
acts_as_mappable
end
我试图获得最接近给定点的route
。
有了这个请求Route.joins(:etapes).within(10, :origin => [1.23456,-5.3269])
我可以得到route
,但我得到了重复的信息(因为这个route
有很多步骤接近给定点):
#<ActiveRecord::Relation [
#<Route id: 1, created_at: "2016-03-26 21:53:01", updated_at: "2016-03-26 21:53:01">,
#<Route id: 1, created_at: "2016-03-26 21:53:01", updated_at: "2016-03-26 21:53:01">
]>
我该怎么做才能删除重复的条目?
我很容易去的是
Route.joins(:etapes).within(10, :origin => [1.23456,-5.3269]).group(:id)
这将生成一个GROUP BY `routes`.`id`
对于基本查询,该将获得所需的内容。但是,如果您需要COUNT
这些,那么您需要更改策略,因为COUNT
将在组内适用。
我倾向于为此目的避免使用uniq
解决方案,因为我发现它的表现很糟糕。不确定这是否泛化,但它可能与它生成一个 SELECT DISTINCT `routes`.*
有关,即使您真的只需要按 id DISTINCT
,它也比较所有列。