Rails 活动记录连接和复制数据



我有一个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,它也比较所有列。

相关内容

  • 没有找到相关文章

最新更新