私は私のクイズモデルと私のquiz_sessionモデルとの間に1対1の関係があり、クイズコントローラの@quiz.quiz_sessionにアクセスしようとすると、quiz_sessionオブジェクトはnilになります。 しかし、レールコンソールのquiz_sessionオブジェクトをチェックすると、参照されているクイズが表示されます。レール参照オブジェクトなし
# quizzes_controller.rb:
def show
@quiz_session = @quiz.quiz_session
logger.debug "quizzes_controller"
logger.debug @quiz_session.inspect
end
#development.log output:
quizzes_controller
nil
#quiz.rb:
class Quiz < ApplicationRecord
belongs_to :quiz_session, dependent: :destroy
accepts_nested_attributes_for :quiz_session, reject_if: :all_blank, allow_destroy: true
end
#quiz_session.rb:
class QuizSession < ApplicationRecord
has_one :quiz
end
#rails console:
irb(main):001:0> QuizSession.first
QuizSession Load (0.0ms) SELECT "quiz_sessions".* FROM "quiz_sessions" ORDER BY "quiz_sessions"."id" ASC LIMIT ? [["LIMIT", 1]]
=> #<QuizSession id: 31, access_key: "srtjki356xm", created_at: "2017-04-23 22:54:51", updated_at: "2017-04-23 22:54:51", quiz_id: 1, current_question_index: nil>
irb(main):002:0> Quiz.find(1)
Quiz Load (0.0ms) SELECT "quizzes".* FROM "quizzes" WHERE "quizzes"."id" = ? LIMIT ? [["id", 1], ["LIMIT", 1]]
=> #<Quiz id: 1, title: "Chapter 1.1", lecture_unit: "2017-03-19", unlocked_at: "2017-03-19 14:00:00", course_id: 1, created_at: "2017-03-19 02:27:28", updated_at: "2017-03-19 02:27:28">
私はRuby on Railsが新しく、Rails 5.0.2を使用しています。任意の助けをいただければ幸いです:)
'quiz_session'に' nil'を与える '@ quiz'は何ですか? – Sajin
'quiz_id'のために働いているかどうかをチェックする' show'メソッドの始めに '@quiz = Quiz.find(1)'を追加してください1 – Sajin
'@quiz = Quiz.find(params [:id])' – sa77