如何在ActiveRecord中选择最大子值?

时间:2010-11-17 19:42:41

标签: ruby activerecord

我甚至不确定怎么说这个,所以一个例子:

我有两个型号,

Chicken   
  id   
  name

EggCounterReadings
  id   
  chicken_id   
  value_on_counter
  timestamp

当我算数时,我并不总是记录每只鸡的数量。

使用ActiveRecord 如何获得每只鸡的最新蛋数?

因此,如果我有1只鸡和3个计数,那么今天的计数是1,明天是15,第二天是18。那只鸡放了18个鸡蛋,而不是34个鸡蛋

更新:找到我在MySQL中尝试做的事情。找到“The Rows Holding the Group-wise Maximum of a Certain Column”。所以我需要.find_by_sql("SELECT * FROM (SELECT * FROM EggCounterReadings WHERE <conditions> ORDER BY timestamp DESC) GROUP BY chicken_id")

1 个答案:

答案 0 :(得分:1)

鉴于您的更新问题,我已经改变了答案。

chicken = Chicken.first
count = chicken.egg_counter_readings.last.value_on_counter

如果你不想要最新的记录,但最大的产蛋率,那么试试这个:

chicken = Chicken.first
count = chicken.egg_counter_readings.maximum(value_on_counter)

我相信应该做你想做的事。