Devits를 사용하여 User
모델을 만들고 type
열을 추가 했으므로 Student
및 Teacher
모델을 상속받을 수 있습니다. 이 모든 것이 훌륭하게 작동했습니다. 내 Teacher
모델은 모델 Course
과 일대 다 관계가 있으며 교사 과정에 대한 모든 데이터가 저장됩니다.Rails 단일 테이블 상속 도움말 작성자
내 문제 : courses
테이블에 user_id
테이블이 없기 때문에 Devise 도우미 current_user.courses
이 작동하지 않습니다. 코스의 속성이 teacher_id
이라해도 current_user
은 .courses
을 해결할 수 있도록하려면 어떻게해야합니까?
저는 Rails 초보자입니다. 그래서 어떤 도움을 주시면 감사하겠습니다! :)
편집 : 세련된 질문과 스키마와 모델이 추가되었습니다.
# schema.rb:
create_table "courses", force: :cascade do |t|
t.string "title"
t.datetime "created_at", null: false
t.datetime "updated_at", null: false
t.integer "teacher_id"
t.index ["teacher_id"], name: "index_courses_on_teacher_id"
end
create_table "users", force: :cascade do |t|
t.string "email", default: "", null: false
t.string "encrypted_password", default: "", null: false
t.string "reset_password_token"
t.datetime "reset_password_sent_at"
t.datetime "remember_created_at"
t.integer "sign_in_count", default: 0, null: false
t.datetime "current_sign_in_at"
t.datetime "last_sign_in_at"
t.string "current_sign_in_ip"
t.string "last_sign_in_ip"
t.datetime "created_at", null: false
t.datetime "updated_at", null: false
t.string "name"
t.string "type"
t.integer "quiz_session_id"
t.index ["email"], name: "index_users_on_email", unique: true
t.index ["quiz_session_id"], name: "index_users_on_quiz_session_id"
t.index ["reset_password_token"], name: "index_users_on_reset_password_token", unique: true
end
# /app/models/course.rb:
class Course < ApplicationRecord
belongs_to :teacher
has_many :students
delegate :teachers, :students, to: :users
end
# /app/models/user.rb:
class User < ApplicationRecord
devise :database_authenticatable, :registerable,
:recoverable, :rememberable, :trackable, :validatable
has_many :courses
# 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
당신은 당신의'schema.rb'를 추가 할 수 있습니다 :
, 내가 당신을 위해 작동합니다 아래 좋아하는 사용자 모델의
course
연결을 변경하는 생각 업데이트 된 모델 코드를보고 후/또는 모델? –