1

私のレールアプリでは、いくつかのデータをフェッチします。その結果は、null、1 つ、または複数の同一のレコードである可能性がありますが、価格の値が異なる可能性があるため、配列で反復処理を行い、価格の値が最も低いレコード (配列値) を選択する必要があります。これどうやってするの?私はそのようなコード部分を持っています:

@prlist = PriceList.find(:first, :conditions => { :id => @search.map(&:price_list_id)})

例えば:

id name value
1 ololo 15
2 ololo 14
3 ololo 26

2-d を選択する必要があります。

4

2 に答える 2

2

私は信じている

PriceList.where('value = MIN(value)')

あなたのために働くはずです(少なくともMySQL、Postgres、SQLite3の場合)。

(行全体ではなく)最小値のみが必要な場合:

PriceList.minimum('value')
于 2012-10-10T21:46:53.750 に答える
1

'値'で順序を追加するだけです:

@prlist = PriceList.find(:first, :conditions => { :id => @search.map(&:price_list_id)}, :order => 'value')
于 2012-10-11T07:14:15.567 に答える