【发布时间】:2014-10-08 07:02:01
【问题描述】:
在我的市场中,我在这样的模型中有 3 个连接表...
- 卖家-有很多产品,通过交易,有很多 交易
- 交易-属于产品,属于销售
- 产品-有很多卖家,通过交易,有很多 交易
我试图在每个卖家页面上发布他们的产品列表,以及他们竞争对手的平均价格,但仅限于数量小于或等于他们销售数量的情况。
例如卖家 1 有 iPhone 案例,他们分批销售 50 个。我想在 Transaction 连接表中显示平均价格列,但仅在 product_id 相同(即相同产品)和数量列
我有以下代码,它给了我一个交易列表,但是当我将平均函数放在价格字段上时,它给了我所有价格的平均值,而不是过滤那些数量为
<% product_sums = @seller.trans.group(:product_id).average(:price) %>
<% product_qty = @seller.trans.group(:product_id).sum(:quantity) %>
<% Product.joins(:trans).where("trans.quantity <= ?", product_qty).where(id: product_sums.keys).sort_by {|b| -product_sums[b.id]}.each do |result| %>
<td><%= product_sums[result.id] %></td>
有人可以帮忙做第二部分吗?仅过滤数量为 的价格
谢谢
【问题讨论】:
标签: ruby-on-rails rails-activerecord