选择父记录和子记录,并使用rails 3按子进行排序

时间:2012-01-29 17:58:33

标签: ruby-on-rails ruby-on-rails-3 model parent

我正在尝试在“显示”页面上显示用户的所有任务列表(包括每个任务的相关项目信息)。

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 个答案:

答案 0 :(得分:2)

有两种方法。一个使用连接:

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

要完成这项工作,用户必须拥有许多任务

has_many :tasks, through: :projects

另一种方法使用预先加载:

@projects = @user.projects.includes(:tasks)

答案 1 :(得分:0)

# controller
@projects = current_user.projects.joins(:tasks)

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