在tasks控制器中
class TasksController < ApplicationController
def index
@tasks= Task.find_all_by_complete(false, :order=>'created at DESC')
def index
@tasks= Task.find_all_by_complete(false, :order=>'created at DESC')
end
end
end
Task类调用了rails提供的动态查询方法find_by,在整个app中调用了多次这个方法。所以我们将这个方法挪到model中。在controller中
class TasksController < ApplicationController
def index
@tasks= Task.find_incomplete
def index
@tasks= Task.find_incomplete
end
end
end
然后在Task model里写这个方法,因为这个是个类方法,所以
在task.rb中
def self.find_incomplete
find_all_by_complete(false, :order => 'created_at DESC')
end
find_all_by_complete(false, :order => 'created_at DESC')
end
整个代码重构就是这样:
# tasks_controller.rb
def index
@tasks = Task.find_incomplete
end
# models/task.rb
def self.find_incomplete
find_all_by_complete(false, :order => 'created_at DESC')
end
# projects_controller.rb
def show
@project = Project.find(params[:id])
@tasks = @project.tasks.find_incomplete
end
def index
@tasks = Task.find_incomplete
end
# models/task.rb
def self.find_incomplete
find_all_by_complete(false, :order => 'created_at DESC')
end
# projects_controller.rb
def show
@project = Project.find(params[:id])
@tasks = @project.tasks.find_incomplete
end
本文转自 fsjoy1983 51CTO博客,原文链接:http://blog.51cto.com/fsjoy/131568,如需转载请自行联系原作者