我想实现这些模型:
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_id
和doctor_id
的东西?
您的Case
需要doctor_id
和patient_id
。这些可以将Doctor
和Patient
作为单独的模型引用:
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