モデル Price には属性データがあるため、
Price.pluck(:data)
[3.99,4.55,5.44] のような結果になります。
そして価格はベンダーに属します
だから私は、ベンダーごとに最適な価格を選択したいと考えています。
Vendor.all.pluck(prices.order("data ASC").first.data)
このシナリオで各ベンダーの最低価格データ要素を抽出するにはどうすればよいですか? 助けてくれてありがとう。
モデル Price には属性データがあるため、
Price.pluck(:data)
[3.99,4.55,5.44] のような結果になります。
そして価格はベンダーに属します
だから私は、ベンダーごとに最適な価格を選択したいと考えています。
Vendor.all.pluck(prices.order("data ASC").first.data)
このシナリオで各ベンダーの最低価格データ要素を抽出するにはどうすればよいですか? 助けてくれてありがとう。
各ベンダーについてminimum(:data)
、関連する価格で使用します。
Vendor.includes(:prices).map { |v| v.prices.minimum(:data) }
これは、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}