自動採点機能を作ろうとしています。
DBはhas_manyとbelongs_toの関係による「調査 - 質問 - 回答」で構成されています。
check_box_tag からユーザーの入力を取得し、回答モデルの user_answer 値を更新します。うまくいっています。問題は q.auto_check メソッドで発生しました。
サーベイコントローラー
def grading
@survey = Survey.find(params[:id])
@survey.user_id = current_user.id
@survey.questions.each do |q|
params[:a_checkbox].each do |check|
q.update(check)
end
q.auto_check
end
end
質問モデル
class Question < ActiveRecord::Base
def auto_check
answers.each do |a|
self.is_correct = true if a.user_answer == true and a.correct == true
self.save!
end
end
...
auto_check メソッドは正しく呼び出せますが、「answers.each do |a|」ラインが邪魔。
wrong number of arguments (0 for 1)
なぜこの問題が発生するのですか?どうすれば修正できますか?