首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >摘要->详细视图/查询

摘要->详细视图/查询
EN

Stack Overflow用户
提问于 2014-05-27 19:32:36
回答 1查看 96关注 0票数 0

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

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

方法#1

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

方法#2

使用打开的发票查询客户,然后在视图中对客户进行迭代并嵌套客户迭代,对该客户的未开发票执行另一次迭代,例如:

代码语言:javascript
复制
<% @customers.each do |customer| %>
  <%= customer.name %>
  <% customer.invoices.open.each do |invoice| %>
    <%= invoice.details %>
  <% end %>
<% end %>

所以,是的。这两种感觉都不太好。方法1看起来像是黑客,方法2似乎会生成太多的查询,尽管它是代码中可读性最强的。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-05-27 19:46:09

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

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

所以在你的控制员那里可以找到顾客

代码语言:javascript
复制
Customer.includes(:invoices).where('customer.name = ?', 'example')
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/23897497

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档