Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/58.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails 如何获取self.read_属性以使用聚合?_Ruby On Rails_Ruby On Rails 3.2 - Fatal编程技术网

Ruby on rails 如何获取self.read_属性以使用聚合?

Ruby on rails 如何获取self.read_属性以使用聚合?,ruby-on-rails,ruby-on-rails-3.2,Ruby On Rails,Ruby On Rails 3.2,我有: class Vehicle这可能是因为您的Vehicle是一个ActiveRelation对象,对其调用sum将使用sql查询(而不是使用您定义的方法)计算sum 将生成查询 class Vehicle << ActiveRecord::Base def odometer metric ? self.read_attribute(:odometer).miles.to.kilometers : self.read_attribute(:odometer) e

我有:


class Vehicle这可能是因为您的
Vehicle
是一个ActiveRelation对象,对其调用sum将使用sql查询(而不是使用您定义的方法)计算sum

将生成查询

class Vehicle << ActiveRecord::Base

  def odometer
    metric ? self.read_attribute(:odometer).miles.to.kilometers : self.read_attribute(:odometer)
  end

end
如果希望调用方法,请执行以下操作

select sum(vehicles.odometer) from vehicles where ...

你的解决方案奏效了。您知道在哪里可以找到有关使用“&”的文档吗?它似乎不适用于
车辆。最大(&:速度)
车辆。sum(&:里程表)
是编写
车辆的另一种方式。sum{v | v.里程表}
。您可以在这里找到一些解释->
average
maximum
不起作用,因为它们没有在Enumerable中定义
 vehicles.sum(&:odometer)