如何在我要创建的应用程序中的模型之间建立连接。计划使用devise gem生成用户模型。每个用户将是学生或患者。因此,我计划分别创建学生模型和患者模型。如何将用户模型链接到学生模型并将用户模型链接到患者模型?
用户模型:(我猜是由Devise Gem创建的)
学生模型:
ID(用户模型中的外键)
名字
姓氏
学生ID
志愿者时间
患者模型:
ID(用户模型中的外键)
患者姓名
患者信息
我的模式有意义吗? 请指教
答案 0 :(得分:2)
用户模型:(我猜是由Devise Gem创建的)
ID
UserName
Password
FirstName
LastName
StudentID
Volunteer Hours
Info
is_student :boolean, default: false
is_patient :boolean, default: false
因此,如果用户是学生,则is_student
为真,患者is_patient
为真
User.where(is_student: true)
=>学生用户
User.where(is_patient: true)
=>患者用户
user.is_student?
=>如果用户是学生,则为true
user.is_patient?
=>如果用户有耐心,则为true
要使学生或患者成为模型,也可以通过范围完成
class User < ApplicationRecord
scope :students, -> {where(is_student:true)}
scope :patients, -> {where(is_patient:true)}
end
答案 1 :(得分:1)
因此,您的问题实际上包括两部分:
id
模型中的User
作为外键,并且对于#1(以Student
为例),您的students
表应包含一个user_id
字段,并且应使用一个belongs_to
关联,例如:
# == Schema Information
#
# Table name: students
#
# id :integer not null, primary key
# user_id :integer
#
class Student < ActiveRecord::Base
belongs_to :user
end
关于#2,这很难说。乍一看,考虑到每个模型都有唯一的数据,似乎有可能分别使用Student
和Patient
模型。但是,有多种方法可以解决该问题,哪种方法最有意义取决于您当前和将来的需求。