我有:
class Vehicle << ActiveRecord::Base
def odometer
metric ? self.read_attribute(:odometer).miles.to.kilometers : self.read_attribute(:odometer)
end
end
当metric = true
和我vehicle.odometer
它起作用时,我得到公里数。
但是当我调用聚合vehicles.sum(:odometer)
时,它不起作用,好像没有调用方法里程表。
答案 0 :(得分:1)
这可能是因为你的vehicles
是一个ActiveRelation对象,并且对它的调用sum将使用sql查询计算总和(不使用你定义的方法)
生成的查询将是
select sum(vehicles.odometer) from vehicles where ...
如果要调用方法,请执行以下操作
vehicles.sum(&:odometer)