내 모델 Student와 Teacher가 동일한 Devise 모델 User로부터 상속받을 수 있도록 단일 테이블 상속을 사용합니다 (속성은 동일하며 다른 모델과의 관계 만 있습니다. 다른).Rails DevTI STI - 정의되지 않은 로컬 변수 또는 메소드 <QuizSession>
이제 Teacher와 일대일 관계가 있고 학생과 일대일 관계가있는 QuizSession 모델의 인스턴스에서 데이터를 표시하려고 시도했지만 오류가 계속 발생합니다 : undefined local variable or method 'users' for #<QuizSession:0xb48e740>
. 여기
# app/models/user.rb:
class User < ApplicationRecord
devise :database_authenticatable, :registerable,
:recoverable, :rememberable, :trackable, :validatable
belongs_to :quiz_session, optional: true
# Which users subclass the User model
def self.types
%w(Teacher Student)
end
# Add scopes to the parent models for each child model
scope :teachers, -> { where(type: 'Teacher') }
scope :students, -> { where(type: 'Student') }
end
# app/models/teacher.rb:
class Teacher < User
end
# app/models/student.rb:
class Student < User
end
# app/models/quiz_session.rb:
class QuizSession < ApplicationRecord
belongs_to :quiz
has_one :teacher
has_many :students
delegate :teachers, :students, to: :users #<-- this is apparently where the error occurs
end
편집 : 나는 @quiz_session.students
를 호출 할 때 문제가 발생하는 것 같습니다. 올바른 QuizSession 레코드가 발견되는 동안 명백하게 .students를 해결할 수 없습니까? 왜 사용자 모델은 학생 모델이 상속해야하는 quiz_session_id
속성을 가지고 있기 때문에 나는 이해하지 못합니다.
''': users'''를''': user'''로 변경하십시오. – hashrocket
고마워요! 나는 그것을 '대리인 : 교사, 학생, to : : 사용자'로 변경했으며 이제는 효과가있는 것처럼 보입니다! 당신이 대답으로 그것을 쓰면 @hashrocket 나는 그것을 받아 들일거야! :) – megahra