【发布时间】:2013-08-27 13:16:08
【问题描述】:
我有一个模型 Lap:
class Lap < ActiveRecord::Base
belongs_to :car
def self.by_carmodel(carmodel)
scoped = joins(:car_model).where(:car_models => {:name => carmodel})
scoped
end
def self.fastest_per_car
scoped = select("laps.id",:car_id, :time, :mph).group("laps.id", :car_id, :time, :mph).order("time").limit(1)
scoped
end
end
我只想返回每辆车的最快圈速。
所以,我需要按 Lap.car_id 对圈数进行分组,然后只返回基于该车的最快圈速,这将由 Lap.time 列确定
基本上我想将我的方法堆叠在我的控制器中:
@corvettes = Lap.by_carmodel("Corvette").fastest_per_car
希望这是有道理的......
当尝试仅运行 Lap.fastest_per_car 时,我将所有内容限制为 1 个结果,而不是每辆车 1 个结果。
我必须做的另一件事是添加“laps.id”,因为 :id 在我的结果中也显示为空。如果我只是选择(:id)它说的是模棱两可
【问题讨论】:
-
如果汽车有多圈共享最快时间,您会如何处理?返回所有的,最早的,最近的.. ?
-
在这种情况下,我可能只想返回最新的。这些时间将类似于 54.354,因此完全相同的机会很小,但可能存在。基本上只返回一个所说的 car_id 最快的时间
标签: ruby-on-rails ruby-on-rails-3 postgresql activerecord ruby-on-rails-4