ruby-on-rails - 如何在 ActiveRecord 类方法中使用 'map' 方法?

标签 ruby-on-rails ruby activerecord collections dictionary

不确定我的 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_turnaroundInvoice.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/

相关文章:

mysql - 添加索引 Ruby on Rails 4.1.4 迁移

python - 是否有任何库允许 Python 或 Ruby 从 SVN 获取信息?

ruby - 使用决胜局按长度对数组数组进行排序

ruby-on-rails - Rails 模型上的动态方法

ruby-on-rails - 在 IIS 上配置 Rails?

ruby-on-rails - Rails 4 + Devise : Invalid route name, 已在使用中

ruby - 将 haml 标签放在 link_to 助手中

ruby-on-rails-3 - 将 activerecord-reputation-system 查询与分页相结合

ruby-on-rails - 在多个条件下有效地获取记录

ruby-on-rails - 无法使用 Factory Girl 和 rspec 更新关联对象的属性