我应该如何在一个用户表中实现医生和患者



我想实现这些模型:

Doctor # maybe I should use STI Doctor < User
 has_many :cases
Patient
 has_many :cases
Case # each case has one pair of doctor and patient
 belongs_to :doctor
 belongs_to :patient

但是我现在有具有设计身份验证的用户模型。哪些字段应该cases表,我是否需要更改关联中的某些内容才能使其正常工作?

医生和用户应该能够登录到应用。

所以我认为cases表应该有类似patient_iddoctor_id的东西?

您的Case需要doctor_idpatient_id。这些可以将DoctorPatient作为单独的模型引用:

class Doctor < ActiveRecord::Base
  has_many :cases
end
class Patient < ActiveRecord::Base
  has_many :cases
end
class Case < ActiveRecord::Base
  belongs_to :doctor
  belongs_to :patient
end

或者他们可以一般地引用User(可能带有某种role字段):

class User < ActiveRecord::Base
  has_many :doctor_cases, class_name: "Case", foreign_key: "doctor_id"
  has_many :patient_cases, class_name: "Case", foreign_key: "patient_id"
end
class Case < ActiveRecord::Base
  belongs_to :doctor, class_name: "User"
  belongs_to :patient, class_name: "User"
end

现在,用户在一种情况下可能是医生,在另一种情况下可能是患者:-)

我认为class_name会起作用

class User < ActiveRecord::Base
  has_many :doctors, :class_name => 'User', :foreign_key => 'doctor_id'
  has_many :patients, :class_name => 'User', :foreign_key => 'patient_id'
end
class Case < ActiveRecord::Base
  belongs_to :doctor, :class_name => 'User', :foreign_key => 'doctor_id'
  belongs_to :patient, :class_name => 'User', :foreign_key => 'patient_id'
end

最新更新