通过has_many通过关系迭代

时间:2013-12-06 10:05:21

标签: ruby-on-rails

在我的应用中,我有Document has_many CompaniesCompanydocs。反之亦然,有一个Company has_many DocumentsCompanydocs。一切正常。现在我有一个文档索引视图,其中显示所有文档以及每个公司的列,如果该文档适用于公司,则具有true或false值。

我可以得到所有document.company_ids但是我不会得到虚假的公司,只有真正的公司,所以我应该首先遍历所有公司:

%table
  %tr
    %td Document
    %td Company A
    %td Company B
  - @documents.each do |doc|
    %tr
      %td= doc.name
      - Company.all.each do |company|
        - if company has document for this company
          "true"
        - else
          "false"

我应该如何编写伪代码if company has document for this company

1 个答案:

答案 0 :(得分:0)

您可以使用Array#include?方法,如下所示:

if company.documents.include?(doc)

另外,我强烈建议在控制器中预加载公司(以及相关文档),这样可以避免多个SQL查询:

@companies = Company.includes(:documents)

并在视野中:

- @companies.each do |company|