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