我正在尝试在“显示”页面上显示用户的所有任务列表(包括每个任务的相关项目信息)。
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来推荐这个吗?
答案 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