Ruby on Rails:从DB列获取最大值

key*_*red 114 sql ruby-on-rails

目前我可以在我的数据库上进行直接的SQL查询:

SELECT MAX(bar) FROM table_name
Run Code Online (Sandbox Code Playgroud)

它返回该表中的最大值.但是,当我在Rails中创建我认为是等效的调用时,它不起作用.我打电话给:

Bar.all(:select => "Max(bar)")
Run Code Online (Sandbox Code Playgroud)

这简单地返回:

[#<Bar >]
Run Code Online (Sandbox Code Playgroud)

在我要求的专栏中是一系列识别号码,我正在寻找最大的号码.在Rails中是否有其他方法可以访问它?

Dyl*_*kow 249

假设您的模型名称是,Bar并且它有一个名为的列bar,这应该工作:

Bar.maximum("bar")
Run Code Online (Sandbox Code Playgroud)

有关详细信息,请参阅有关计算的优秀Rails指南部分.


Man*_*era 8

另一种方式

Bar.select("Max(bar) as max_bar").first.max_bar
Run Code Online (Sandbox Code Playgroud)

  • 例如,如果你想要最小值和最大值:`Bar.select("MAX(bar) max_bar, MIN(bar) min_bat").first.attributes` (22认同)
  • 你为什么想做这个?更详细,并执行与 `Bar.maximum(:bar)` 完全相同的查询,所以我认为没有理由“推荐”这个答案...... (5认同)
  • 他确实为这个问题提供了正确的答案。也许这不是最好的答案,但他没有做错什么。 (4认同)
  • 我认为它很有价值,因为它展示了在 .select 内部使用函数的示例,这些知识有助于执行要选择多个内容的类似查询。 (3认同)
  • 提出问题的人只想要最大。 (2认同)