Sas*_*sha 1 refactoring controller ruby-on-rails
我的控制器中有两个动作
def up_vote
lesson = Lesson.find(params[:id])
current_user.up_vote!(lesson)
flash[:message] = 'Thanks for voting!'
redirect_to lesson_path(lesson)
end
def down_vote
lesson = Lesson.find(params[:id])
current_user.down_vote!(lesson)
flash[:message] = 'Thanks for voting!'
redirect_to lesson_path(lesson)
end
Run Code Online (Sandbox Code Playgroud)
我想知道什么是重构这个(记住DRY)的好方法?我在网上读到我不应该试图滥用before_filter.我还能用什么呢?谢谢!
def vote_up
vote(:up)
end
def vote_down
vote(:down)
end
protected
def vote(direction)
lesson = Lesson.find(params[:id])
current_user.send :"#{direction}_vote!",lesson
flash[:message] = 'Thanks for voting!'
redirect_to lesson_path(lesson)
end
Run Code Online (Sandbox Code Playgroud)