获取桌子售票的总数。导轨

时间:2017-03-25 14:01:52

标签: mysql ruby-on-rails ruby

好。我正在尝试填写一张表格,其中包含每种票证类型已售出票数的数据。

enter image description here

因此,event有许多tickets,而机票有ticket_type。我需要获得每种票类型的售票总数。在上图中,您可以看到我收到的数量与销售数量有关。

模态:

EVENT:

has_many :ticket_types, dependent: :destroy
has_many :purchases, dependent: :destroy
has_many :tickets, through: :purchases

TICKET:

belongs_to :ticket_type
belongs_to :purchase

TICKET_TYPE:

belongs_to :event

这是表循环:

  <% event.ticket_types.each do |ticket_type| %>
    <tr class=tickets-sold-modal__data>
      <td><%= ticket_type.name %></td>
      <td>$<%= ticket_type.amount.to_i %></td>
      <td><%= event.ticket_type_purchases %></td>
    </tr>
  <% end %>

在这次迭代中,我正在调用event.ticket_type_purchases,这就是这个方法:

 def ticket_type_purchases
  event.tickets.group(:ticket_type_id).count
 end

即返回屏幕截图中的数量以销售数量。根据给定的信息,我如何收集TOTAL TICKETS SOLD FOR EACH TICKET TYPE并在屏幕上显示该内容?

1 个答案:

答案 0 :(得分:1)

只需将您的观看代码更改为:

<tr class=tickets-sold-modal__data>
  <td><%= ticket_type.name %></td>
  <td>$<%= ticket_type.amount.to_i %></td>
  <td><%= event.ticket_type_purchases[ticket_type.id] || 0 %></td>
</tr>
  

但是优化上面的代码以将event.ticket_type_purchases的输出存储在变量中,这样就不会多次进行数据库调用。