19

これは、完全なレコードではなく、最大を返します。

self.prices.maximum(:price_field)

そして現在、私は次のような記録を見つけました:

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

これは正しい方法ですか?上記を機能させるには 2 つの SQL ステートメントが必要であり、どういうわけか正しくないからです。

Ps。さらに、複数のレコードに同じ「最大」値がある場合は、最新のupdated_at値を持つレコードを取得する必要があります。それは別の SQL ステートメントを意味するのでしょうか??

pps。Rails の AREL および非 AREL に関する優れたリファレンスまたは詳細なリファレンスを知っている人はいますか? Rails Guide for ActiveRecord クエリだけでは十分ではありません!

(私はRails3を使用しています)

===更新===

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 に答える