不确定我的 Ruby 语法。
我想定义一个可以像这样调用的方法:client.invoices.average_turnaround
。所以我的 average_turnaround
方法需要处理一组 ActiveRecord 对象。
到目前为止,这是我的代码:
class Invoice < ActiveRecord::Base
...
def self.average_turnaround
return self.map(&:turnaround).inject(:+) / self.count
end
end
因此,我试图找出每张发票的周转时间总和,然后将其除以发票总数。
Ruby 提示没有为 Class
定义的 map
方法。我期望 self
是一个 Array
。
如何编写一个适用于 Invoices
集合并使用 map
函数的方法?我哪里错了?
最佳答案
如果您想在类方法中使用映射而不是通过关联扩展。例如,直接调用 Invoice.average_turnaround
或 Invoice.where(x: y).average_turnaround
是否有用。将 all.
放在 map
之前。
class Invoice < ActiveRecord::Base
...
def self.average_turnaround
all.map(&:turnaround).inject(:+) / all.count
end
end
使用 average_turnaround
使用任何集合。
关于ruby-on-rails - 如何在 ActiveRecord 类方法中使用 'map' 方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3491989/