私はコントローラのリファクタリングに取り組んできました。問題は、コントローラ固有のメソッドをどこで作成する必要がありますか?例えばリファクタリングコントローラ、どこに新しいメソッドを作成しますか?
、コントローラ内の私のcreateアクションは、現在のようになります。メソッドあたり5つの系統:私はそれらのいずれかがあること、Sandi Metz' rules for developersを使用してに向けて作業を開始しています
scores_controller.rb
def create
@score = @user.scores.new(score_params)
if @score.save
set_shuffled_questions(@score, params[:score][:selected])
questions = Score.build_quiz(@score, params[:score][:selected])
question = questions.shuffle.first
cookies[:question] = question.question
flash[:success] = "Begin quiz, good luck!"
redirect_to score_quiz_path(@score, question)
else
flash[:alert] = "You suck"
render 'new'
end
end
。私の最も本質的な本能は、このコントローラーのためのメソッドでいっぱいになったまったく新しいクラスを作成すること以外は、Score.rb
というモデル内に置くことです。私はあなたがモデルから永続的なクッキーを設定することができないということで、これはそれを行うには正しい方法ではないかなり確信
score.rb
# Creates quiz with shuffled questions.
def set_shuffled_questions(selected)
questions = Score.build_quiz(self, selected)
question = questions.shuffle.first
cookies[:question] = question.question
flash[:success] = "Begin quiz, good luck!"
redirect_to score_quiz_path(self, question)
end
scores_controller.rb
def create
@score = @user.scores.new(score_params)
if @score.save
@score.set_shuffled_questions(params[:score][:selected])
else
flash[:alert] = "You suck"
render 'new'
end
end
:それが事実だった場合、私はに方法を変更することができるだろう。メソッドでコントローラをリファクタリングする適切な方法は何ですか?