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

Ruby 如何在ActiveRecord中选择最大子值?,ruby,activerecord,Ruby,Activerecord,我甚至不知道该怎么说,举个例子: 我有两个模型 Chicken id name EggCounterReadings id chicken_id value_on_counter timestamp 当我计数时,我并不总是记录每只鸡的计数 使用ActiveRecord如何获得每只鸡的最新蛋数 因此,如果我有一只鸡和三个计数,计数将是今天1个,明天15个,第二天18个。那只鸡下了18个蛋,不是34个 更新:找到了我在MySQL中想要做的事情。发现

我甚至不知道该怎么说,举个例子:

我有两个模型

Chicken   
  id   
  name

EggCounterReadings
  id   
  chicken_id   
  value_on_counter
  timestamp
当我计数时,我并不总是记录每只鸡的计数

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

因此,如果我有一只鸡和三个计数,计数将是今天1个,明天15个,第二天18个。那只鸡下了18个蛋,不是34个


更新:找到了我在MySQL中想要做的事情。发现所以我需要。从EggCounterReads中的SELECT*中查找,其中ORDER by timestamp DESC GROUP by chicken_id

根据您更新的问题,我已更改了答案

chicken = Chicken.first
count = chicken.egg_counter_readings.last.value_on_counter
如果你不想要最新的记录,但是想要最大的产蛋量,那么试试这个:

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

我相信这应该可以满足你的需要。

这已经大大简化了,但我只能尽我所能解释我要找的东西。几乎重复:谢谢。但是,我确实记录了每个条目超过1项。这样想,鸡整天都在快乐地下蛋,下面有一个柜台。我走过来,读了每只鸡的柜台上的数字,然后把数字写下来。也许我可以把第二个模型改名为LayedEggCount。看起来不错。也许我试图在出现问题之前进行过度优化。但我以后会有很多鸡来重复。有什么方法可以获得按鸡分组的最大鸡蛋计数器读数的集合吗?在SQL中,我要做的是选择MAXvalue_on_counter作为value_on_counter,id,rest,of,fields group by chicken_id,这样我就得到了我的答案:eggcounterreads.find_by_sqlinsert awesome语句。接受答案,因为这是我需要的98%!一个更活跃的方法可能更像这样:eggccounterreading.maximumvalue_on_counter,:group=>:chicken。但是用sql查找很可能会更快。