使用关联rails找到最大值的正确方法

我有以下型号:

#equipment.rb class Equipment < ActiveRecord::Base belongs_to :odometer_type has_many :odometers end #odometer.rb class Odometer  equipment.id).max(:mileage) end end 

在视图中看起来更糟糕,如下所示:

 = @equipment.odometers.current_reading(@equipment) 

我认为应该有更好的方法来做到这一点,但我似乎无法提出或找到任何东西。 老实说,我甚至不确定如何搜索这样的东西。

谢谢你的帮助。

如果你想要设备的最后插入里程表的里程数

 # assuming autoincrement id @equipment.odometers.order('odometers.id DESC').limit(1).first.mileage # assuming created_at column @equipment.odometers.order('odometers.created_at DESC').limit(1).first.mileage 

如果您想获取设备的最大里程表里程数:

 @equipment.odometers.maximum(:mileage) 

由于Equipment has_many :odometers关系,在上面的代码中:equipment_id => equipment.id条件是隐含的。

您可能希望实现与计数器缓存类似的东西,只是为了获取最大值,以加快查询速度。

您可以将其放入您的设备型号中

 class Equipment < ActiveRecord::Base belongs_to :odometer_type has_many :odometers def max_milage odometers.max(:mileage) end end 

然后你可以像@equipment.max_milage一样访问它