1

我正在构建一个简单的 ToDo 应用程序,其中有项目,有很多任务,有很多子任务。可以将用户分配给项目、任务和子任务。

在我的应用程序的一部分(在项目显示页面上),我希望显示过期的任务和子任务。我用以下代码选择它们:

 35     @project_tasks = @project.tasks 
 36     @project_subtasks = @project.subtasks
 37   
 38     # OVERDUE
 39     @overdue_tasks = @project_tasks.overdue
 40     @overdue_subtasks = @project_subtasks.overdue
 41     @overdue_tasks_and_subtasks = @overdue_tasks + @overdue_subtasks
 42     @overdue_tasks_and_subtasks_sorted = @overdue_tasks_and_subtasks.sort_by {|object| object.target }

这显示了某个项目上所有用户的过期任务和子任务。但是,我希望在用户单击按钮时可以选择,他只能看到分配给他的任务和子任务。因此,第 43 行适用以下范围:

@overdue_tasks_and_subtasks_from_current_user_sorted = @overdue_tasks_and_subtasks_sorted.where( #one of the users is the current_user )

这个范围怎么写?

4

1 回答 1

1

由于@overdue_tasks_and_subtasks_sorted是一个数组,我想你可以使用 Array#select:

@overdue_tasks_and_subtasks_from_current_user_sorted = @overdue_tasks_and_subtasks_sorted.select do |task|
 task.users.include?(current_user)
end

选择标准的确切性质自然取决于您如何将任务/子任务与用户相关联,以及您如何跟踪当前用户。

我的直觉是,你可以通过一些巧妙的数据库查询来提高效率,但具体如何工作取决于许多因素——你使用的是哪个数据库,你是否在 Rails 3 上,你的模型是什么以及如何交互等。

于 2012-07-18T21:53:27.187 回答