【问题标题】:Ruby on rails count and group with PostgreSQLRuby on rails 使用 PostgreSQL 计数和分组
【发布时间】:2011-11-30 16:22:09
【问题描述】:

我需要在不同的列上获取和分组一个模型。我的Stock 模型包含variation_id, color_id, storage_id, in_stock。必须使用 SQLite 和 Postgre

我想按变化分组,然后按存储和显示 in_stock 的总和

  • 变体 1(总数:22)

    • 存储A:12
    • 存储 B:10
  • 变体 2(总数:234)

    • 存储A:12
    • 存储 B:10
    • 存储 C:212

@stocks = Stock.locked.all

视图应该是什么样子?到目前为止,我已经能够按变化进行分组,但不知道如何迭代存储并进行计算。如何提取逻辑以将其移动到模型中?

<% @stocks.group_by(&:variation).each do |variation, stocks| %>
   <h2><%= variation.name %> (<%= variation.color.name %>)</h2>
<% end %>

* 编辑 *

重新设计了视图。我得到了变化和存储,但求和函数失败undefined method '+' for #&lt;Stock:0x007ff15a06cf68&gt;

<% @stocks.group_by(&:variation).each do |variation, stocks| %>
  <h2><%= variation.name %> </h2>

  <% stocks.group_by(&:storage).each do |storage, stock| %>
    <li><%= storage.name %>: <%= stock.sum(:in_stock) %></li>
  <% end %>   
<% end %>

【问题讨论】:

    标签: ruby-on-rails-3 postgresql group-by


    【解决方案1】:

    数据已正确提取。错误来自操作返回数组的错误方法。这是工作代码。

    <% @stocks.group_by(&:variation).each do |v, stocks| %>
      <h3 class="variations"><%= v.name %>: <%= stocks.map {|x| x.in_stock}.sum %></h3>
      <% stocks.group_by(&:storage).each do |storage, s| %>
        <li><%= storage.name %>: <%= s.map {|x| x.in_stock}.sum %></li>
      <% end %>
    <% end %>
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-11-10
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-03-03
      • 1970-01-01
      • 1970-01-01
      • 2013-07-06
      相关资源
      最近更新 更多