Мои модели выглядят так:
class Task < ApplicationRecord
belongs_to :project
belongs_to :urgency
end
class Project < ApplicationRecord
has_many :tasks, dependent: :destroy
end
class Urgency < ApplicationRecord
has_many :tasks
end
Я пытаюсь отобразить количество задач на проект в таблице.Например, я хочу видеть таблицу, показывающую, что у проекта A есть 10 задач, а у проекта B - 7 задач и т. Д.
Кроме того, я хочу затем иметь возможность отображать только количество задач в каждом проекте, где срочностьвысокий (это будет означать, что нужно взять urgency_id из таблицы задач и найти имя срочности в таблице срочности).
В моем контроллере у меня есть:
def project
@task = Task.joins(:project).joins(:urgency).where(urgencies: {urgency_value: 7}).group_by(&:project_id)
end
Теперь я хочу показатьтаблица в представлении, в которой есть столбец для имени проекта, а затем еще один столбец для количества задач в этом проекте.
Я уверен, что мой код очень неэффективен, и должен быть более простой и прямойпуть.Вот мой код:
<% @task.each do |t, a| %>
<% @counter = 0 %>
<tr>
<% a.each do |x| %>
<% @project_name = x.project.project_name %>
<% @counter = @counter + 1 %>
<% @urgency = x.urgency.urgency %>
<% end %>
<td><%= @project_name %></td>
<td><%= @counter %></td>
<td><%= @urgency %></td>
</tr>
<% end %>
Как я могу улучшить свой код, чтобы он не был слишком длинным?Есть ли какая-нибудь "магия" Rails, которая может помочь?