摘要 - >详细信息视图/查询

时间:2014-05-27 19:32:37

标签: ruby-on-rails

是否建议使用一般模式来构建“摘要详细信息”类型视图?例如,您有一个带有报告视图的发票应用程序,需要为每个客户列出标题,并在标题下列出该客户的每个未结发票的详细信息。

以下是我过去尝试处理它的方式(使用客户/发票示例),其中没有一个非常令人满意:

方法#1

创建一个连接查询,将客户详细信息与发票相关联。在集合中的视图循环中,使用实例变量来跟踪正在循环的客户。在循环代码中有一个条件,将当前迭代的客户与最后一个interation的客户进行比较。如果它们不同,请为新客户添加标题。

方法#2

查询具有未结发票的客户,然后在视图中迭代客户并嵌套客户迭代,对该客户的未结发票进行另一次迭代,例如:

<% @customers.each do |customer| %>
  <%= customer.name %>
  <% customer.invoices.open.each do |invoice| %>
    <%= invoice.details %>
  <% end %>
<% end %>

所以,是的。这些都不是很好。方法#1看起来像是一个黑客,方法#2似乎会产生太多的查询,尽管它在代码中最易读。

1 个答案:

答案 0 :(得分:0)

看起来像使用ActiveRecord的经典案例包括选项

http://apidock.com/rails/ActiveRecord/QueryMethods/includes

所以在您的控制器中找到客户

Customer.includes(:invoices).where('customer.name = ?', 'example')