模型Price有一个属性数据,所以
Price.pluck(:data)
结果类似于[3.99,4.55,5.44]
而Price属于供应商
所以我想为每个供应商选择最优惠的价格,比如
Vendor.all.pluck(prices.order("data ASC").first.data)
如何在此方案中为每个供应商提取最低价格数据元素?提前感谢您的帮助。
答案 0 :(得分:3)
对于每个供应商,请对其关联价格使用minimum(:data)
:
Vendor.includes(:prices).map { |v| v.prices.minimum(:data) }
答案 1 :(得分:2)
这是另一种方法,它将更多的工作放在数据库而不是Ruby上。 (我很确定@meagar的答案中的代码会在地图中为每个供应商发出一个选择)。哪种方式更好(更快)可能取决于你的桌子有多大......
你可以这样做,它会发出一个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}
答案 2 :(得分:0)
您无法获得涉及供应商模型的任何信息 - 您需要了解的有关供应商的所有内容已经在Price模型中作为vendor_id,对吧?
所以你需要的只是:
Price.order(:data).group(:vendor_id).pluck(:data)