Ruby on rails rails重构AR查询

Ruby on rails rails重构AR查询,ruby-on-rails,activerecord,refactoring,Ruby On Rails,Activerecord,Refactoring,我正试图重构我的作用域和控制器,但我觉得可能会更好。从控制器的角度来看,新代码肯定更好,但我认为所有任务范围和所有未完成任务(按(u)截止日期排序(u)实例方法有点奇怪。有什么想法吗 用户: 任务: 任务控制器 def index @tasks = Task.alltasks(current_user).uncompleted.includes(:executor, :executor_profile, :assigner, :assigner_profile).order("deadlin

我正试图重构我的作用域和控制器,但我觉得可能会更好。从控制器的角度来看,新代码肯定更好,但我认为
所有任务
范围和
所有未完成任务(按(u)截止日期排序(u)
实例方法有点奇怪。有什么想法吗

用户:

任务:

任务控制器

def index
  @tasks = Task.alltasks(current_user).uncompleted.includes(:executor, :executor_profile, :assigner, :assigner_profile).order("deadline DESC")
end
def index
  @tasks = current_user.all_uncompleted_tasks_ordered_by_deadline
end
新代码:

user.rb

def all_uncompleted_tasks_ordered_by_deadline
  Task.alltasks(self).uncompleted.includes(:executor, :executor_profile, :assigner, :assigner_profile).order("deadline DESC")
end
任务控制器

def index
  @tasks = Task.alltasks(current_user).uncompleted.includes(:executor, :executor_profile, :assigner, :assigner_profile).order("deadline DESC")
end
def index
  @tasks = current_user.all_uncompleted_tasks_ordered_by_deadline
end

我更倾向于认为
所有的_任务
都希望在用户模型中,就像已经分配和执行的任务一样。也许您可以将其作为方法移动到那里,并在控制器中应用所需的
任务
范围

说:

#user.rb
def all_tasks
  Task.where('executor_id = ? OR assigner_id = ?', id, id)
end

#tasks_controller.rb
def index
  @tasks = current_user.all_tasks
                       .uncompleted.includes(:executor, :executor_profile, :assigner, :assigner_profile)
                       .order(deadline: :desc)

end