短版,然後在細節之間的多個活動記錄的關係:的Rails:兩款車型
在我的應用程序的用戶有兩個角色,工作人員和臨牀醫生。員工用戶創建病人記錄。有時候,工作人員用戶會爲他們自己的病人創建患者記錄,有時,工作人員用戶會爲另一位工作人員用戶作爲其醫生的患者創建患者記錄。我的意圖是在每個患者記錄中包括創建記錄的工作人員以及作爲該患者醫生的工作人員。我無法找出正確的活動記錄關係來完成這項工作。
在我的患者表中,我有user_id來保存創建患者記錄的職員用戶的ID。在控制檯中,當我創建一個病人並執行Patient.last.user時,它會返回創建該記錄的用戶。
在我的患者表中,我還有doctor_id來保存作爲該患者醫生的工作人員用戶的ID。在當我創建一個病人,做Patient.last.doctor控制檯我得到這個錯誤:
的ActiveRecord :: HasManyThroughAssociationNotFoundError:找不到關聯:用戶在模型病人
我成功地拯救doctor_id,但我似乎無法按照我想要的方式找回醫生的名字。我的東西是不正確的,或者根據我使用的模式,這是不可能的?
詳情:
class User < ApplicationRecord
include Clearance::User
include StaffUser
include ClinicianUser
validates :first_name, :last_name, :role, presence: true
enum role: { staff: 0, clinician: 1 }
我有工作人員的關切和生活在應用程序/模型/關注臨牀醫生的關注:
clinician_user.rb
require 'active_support/concern'
module ClinicianUser
extend ActiveSupport::Concern
included do
has_one :clinician_profile
has_many :lists
has_many :universities, through: :lists
after_create :create_clinician_profile
end
class_methods do
end
end
staff_user.rb
module StaffUser
extend ActiveSupport::Concern
included do
belongs_to :university
has_many :patients
has_many :referral_requests
validates :university_id, presence: true
end
class_methods do
end
end
這裏是患者模型:
class Patient < ApplicationRecord
belongs_to :user, -> { where role: :staff }
has_and_belongs_to_many :genders
has_and_belongs_to_many :concerns
has_and_belongs_to_many :insurances
has_and_belongs_to_many :races
has_many :referral_requests
has_one :doctor, through: :users
end
醫生不存在作爲模型 - 它必須爲此工作?有沒有辦法讓它再次引用用戶?