rails average query返回一个间隔而不是大十进制

时间:2016-07-07 22:53:15

标签: ruby-on-rails ruby-on-rails-4

我有疑问:

MyModel.includes(:line_items).where("line_items.is_deleted = ?", false).where("line_items.is_verified = ?", false).references(:line_items).average("age(line_items.created_at)")

我正试图通过line_item片段获得这些average("age(line_items.created_at)")记录在数据库中的平均时间。这是返回一个BigDecimal,我不知道该怎么办,有没有办法让它返回一个间隔?

1 个答案:

答案 0 :(得分:0)

有一些方法可以从Postgresql间隔列返回ActiveSupport::Duration,我怀疑你没有获得ISO 8601间隔,因为average需要数字响应。您可能希望在结果上调用.seconds将其转换为ActiveSupport::Duration

average_age = MyModel.average('age(line_items.created_at)')
average_age.seconds.class #=> ActiveSupport::Duration