2

モデル Price には属性データがあるため、

Price.pluck(:data)

[3.99,4.55,5.44] のような結果になります。

そして価格はベンダーに属します

だから私は、ベンダーごとに最適な価格を選択したいと考えています。

Vendor.all.pluck(prices.order("data ASC").first.data)

このシナリオで各ベンダーの最低価格データ要素を抽出するにはどうすればよいですか? 助けてくれてありがとう。

4

3 に答える 3

3

各ベンダーについてminimum(:data)、関連する価格で使用します。

Vendor.includes(:prices).map { |v| v.prices.minimum(:data) }
于 2013-08-08T16:23:26.890 に答える
2

これは、Ruby の作業を減らしてデータベースの作業を増やす別のアプローチです。(@ meagarの回答のコードは、マップ中に各ベンダーの選択を発行すると確信しています)。どちらの方法が優れているか (速いか) は、テーブルの大きさによって異なります…</p>

次のようにすると、1 つの SQL ステートメントが発行されます。

Vendor.select('min(prices.data) as min_price').from('vendors').joins('INNER join prices on vendors.id = prices.vendor_id').group('vendors.id')map {|v| v.min_price}
于 2013-08-09T16:00:38.617 に答える