Как выбрать данные из нескольких моделей в рельсах - PullRequest
0 голосов
/ 07 января 2020

У меня есть три модели project_manager, project_director и human_resource, каждая из которых имеет логическое поле состояния. Как я могу напечатать что-то в рельсах, если логическое значение этих трех моделей истинно. в настоящее время я обращаюсь к данным из модели, выполнив это -

            <% if project_site.project_managers.empty? %>
              <td class="pending fi-eye"><%= " Pending" %></td>
            <% else %>
              <% project_site.project_managers.each do |project_manager| %>
                <% if project_manager.status == false %>
                  <td class="rejected fi-x"><%= ' Rejected' %></td>
                <% elsif project_manager.status == true %>
                  <td class="approved fi-check"><%= " Approved" %></td>
                <% end %>
              <% end %>
            <% end %>

            <% if project_site.project_directors.empty? %>
              <td class="pending fi-eye"><%= " Pending" %></td>
            <% else %>
              <% project_site.project_directors.each do |project_director| %>
                <% if project_director.status == false %>
                  <td class="rejected fi-x"><%= ' Rejected' %></td>
                <% elsif project_director.status == true %>
                  <td class="approved fi-check"><%= " Approved" %></td>
                <% end %>
              <% end %>
            <% end %>

            <% if project_site.human_resources.empty? %>
              <td class="pending fi-eye"><%= " Pending" %></td>
            <% else %>
              <% project_site.human_resources.each do |human_resource| %>
                <% if human_resource.status == false %>
                  <td class="rejected fi-x"><%= ' Rejected' %></td>
                <% elsif human_resource.status == true %>
                  <td class="approved fi-check"><%= " Approved" %></td>
                <% end %>
              <% end %>
            <% end %>

Я хочу распечатать утвержденный, если все эти три значения состояния модели верны, как я могу это сделать в рельсах?

Ответы [ 2 ]

3 голосов
/ 07 января 2020

Создайте вспомогательный метод и введите следующий код:

def check_resource_status(project_site, resources)
 statuses = project_site.send(resources.to_sym).pluck(:status)
 statuses.all? ? true : false
end

def status_container(status)
 content_tag :div, class: ['sample'] do
  status_label = status ? 'Approved' : 'Rejected'
  default_class = status ? 'fi-check' : 'fi-x'
  status_class = [default_class, status_label.downcase]
  concat content_tag(:label, status_label, class: status_class)
 end
end

Из файла просмотра:

status_container(check_resource_status(project_site, 'human_resources'))
status_container(check_resource_status(project_site, 'project_directors'))
status_container(check_resource_status(project_site, 'project_managers'))
0 голосов
/ 07 января 2020

Если я правильно понял ваш вопрос, все, что вам нужно, это что-то вроде этого:

<% if human_resource.status? %>
  <td class="approved fi-check"><%= ' Approved' %></td>
<% else %>
  <td class="rejected fi-x"><%= ' Rejected' %></td>
<% end %>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...