19

这将返回最大值而不是完整的记录:

self.prices.maximum(:price_field)

目前,我发现这样的记录:

def maximum_price
  self.prices.find(:first, :conditions => "price = #{self.prices.maximum(:price_field)}" )
end

这是正确的方法吗?因为上面需要两条SQL语句才能让它工作,总感觉有点不对劲。

附言。此外,我希望如果多条记录具有相同的“最大值”值,那么它应该获得具有最新updated_at值的记录。那么这将意味着另一个SQL语句?

pps。有谁知道Rails 中 AREL 和非 AREL 事物的良好详细参考?ActiveRecord 查询的 Rails 指南还不够!

(我正在使用 Rails 3)

===更新===

使用 AREL 我执行以下操作:

self.prices.order("updated_at DESC").maximum(:price_field)

但这只是给出最大值而不是完整的记录:(
另外,maximum()真的使用 AREL 吗?

4

1 回答 1

32

这样的事情怎么样?

self.prices.order("price DESC").first
于 2011-01-27T13:24:42.440 回答