在我的应用中,我有Document
has_many
Companies
到Companydocs
。反之亦然,有一个Company
has_many
Documents
到Companydocs
。一切正常。现在我有一个文档索引视图,其中显示所有文档以及每个公司的列,如果该文档适用于公司,则具有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
?
答案 0 :(得分:0)
您可以使用Array#include?
方法,如下所示:
if company.documents.include?(doc)
另外,我强烈建议在控制器中预加载公司(以及相关文档),这样可以避免多个SQL查询:
@companies = Company.includes(:documents)
并在视野中:
- @companies.each do |company|