例如,我在数据库中有很少Example
个对象。
#<Example id: 1, some_field: 3>
#<Example id: 2, some_field: 10>
#<Example id: 3, some_field: 4>
说,我想要除了最新鲜的每个物体。我的工作是
examples = Example.order('created_at desc').offset(1)
得到它们。
然后我想找出这两个对象(对象1和对象2)中some_field
的平均值。我做了
examples.average(:some_field)
然后我得到nil导致SQL就像
SELECT AVG("examples"."some_field") AS avg_id FROM "examples" OFFSET 1
似乎所发生的是在平均计算后应用偏移 我使用的解决方案是将集合转换为数组并操作数组 但是我想知道,有没有办法用AR关系在ActiveRecord风格中执行它?
谢谢!
答案 0 :(得分:0)
这将是实现它的一种方法。你可以扩展它以包括你没有兴趣计算的其他行。
freshest_id = Example.order(:id :desc).first
Example.where.not(id: freshest_id).average(:some_field)