2013-12-06 10 views
0

В моем приложении у меня есть Document, который has_manyCompanies через Companydocs. И наоборот, есть Company, который has_manyDocuments - Companydocs. Все это прекрасно работает. Теперь у меня есть индекс индекса документов, где я показываю все документы и столбец для каждой компании с истинным или ложным значением, если этот документ применяется к компании.Итерация через has_many через отношения

я могу получить все 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

Вы можете использовать Array#include? метод, например:

if company.documents.include?(doc) 

Кроме того, я настоятельно рекомендую предварительно погрузочные компании (вместе с соответствующими документами) в контроллере, так что вы можете избежать нескольких запросов SQL:

@companies = Company.includes(:documents) 

и ввиду:

- @companies.each do |company| 
+0

Великий, он работает, спасибо! – John

Смежные вопросы