我的名为stocks的表包含product_id, color_id, storage_id and in_stock
列。
对于给定的产品,我想通过存储对所有库存进行分组,然后对于每个存储,我想要显示产品(颜色):in_stock
我应该如何编写方法以及如何渲染?
答案 0 :(得分:24)
<% Stock.all.group_by(&:storage).each do |storage, products| %>
Storage: <%= storage %>
<% products.each do |product| %>
(<%= product.color_id %>): <%= product.in_stock %>
<% end %>
<% end %>
编辑:更新为使用ERB,in_stock为数字而非布尔是/否列,并使用color_id代替color.name,因为这假设您与颜色有关系。
答案 1 :(得分:1)
没有完全按照你的需要构建(你的帖子中没有足够的信息),但这可能是这样的吗?
items = Stock.select('color_id, in_stock').group('stocks.storage_id').where(:product_id => foo)
items.each {|item| puts "(#{lookup_color(item.color_id)}): #{in_stock}"