0
私は私のプロジェクトのためのカスタムサービスを書いた:Railsの - カスタムサービスで認識されていない渡されたパラメータ[NoMethodError]
#app\services\quiz_data_creation.rb:
class QuizDataCreation
def initialize(user)
@quiz_session = user.quiz_session #<-- here is the problem
end
def create
create_answer_data
end
private
def create_answer_data
@quiz_session.quiz.questions[@quiz_session.current_question_index].answers
end
end
私はこのような私のActionCableチャンネルで作成するメソッドを呼び出す:
class QuizDataChannel < ApplicationCable::Channel
def send_data
logger.debug "[AC] before quiz data creation service - current user: #{current_user.inspect}"
@answers = QuizDataCreation.new(user: current_user).create
#then send answers
end
end
問題は、ロガーが正しいオブジェクトが見つかっていることを示すにもかかわらず、サービスがcreateメソッドを呼び出すときに渡すユーザーオブジェクトを認識しないことです。それは私にエラーメッセージを与えます:
NoMethodError - undefined method quiz_session for #<Hash:0xc86cfa0>
私はDevise生成ユーザーを使用しています。また、Userモデル(Teacher and Student)を継承する2つのモデルを使用していますが、すべての属性はusers
テーブルに格納されていることが適切です。
ユーザーレコードは次のようになります。
[AC] before quiz data creation service - current user: #<Teacher id: 1, email: "[email protected]", created_at: "2017-05-11 07:24:48", updated_at: "2017-07-26 08:40:27", name: "Bob", quiz_session_id: 7>
誰もがこの問題を解決する方法を私に指摘することができれば、私はとても幸せになる - あなたに感謝します! :)
パラメータについて新しいことを学んだり、ありがとうございました!それはそれを修正! :) – megahra