Выберите родительские и дочерние записи и сортируйте по дочерним элементам с помощью направляющих 3 - PullRequest
2 голосов
/ 29 января 2012

Я пытаюсь показать список всех задач (включая информацию о каждом проекте) для пользователя на его странице показа.

User has_many projects
Project belongs_to user
Project has_many tasks
Task belongs_to project

Мне нужен список всех задач для пользователя с отдельными строками для каждой задачи, даже если они обе относятся к одному проекту. Мне нужно будет отобразить имя проекта в строке, а также имя задачи.

Например

**Tasks for User 1**
Project 1  |  Task 1
Project 2  |  Task 2
Project 3  |  Task 3
Project 1  |  Task 4
Project 3  |  Task 5
Project 3  |  Task 6
Project 2  |  Task 7

Кто-нибудь может подсказать, как это с Rails 3?

Ответы [ 2 ]

2 голосов
/ 29 января 2012

Есть два пути. Один использует соединение:

@tasks = @user.tasks.joins(:projects).order("projects.id")

Чтобы сделать эту работу, у пользователя должно быть много задач

has_many :tasks, through: :projects

Другой метод использует энергичную загрузку:

@projects = @user.projects.includes(:tasks)
0 голосов
/ 29 января 2012
# controller
@projects = current_user.projects.joins(:tasks)

# view
-@projects.each do |project|
  -project.tasks.each do |task|
    %p
      =project.title
      |
      =task.title
...