私のアプリには、関心のある3つのモデルがあります。1つ目はPatientモデルで、has_manyRecordモデルがあります。同様に、レコードモデルhas_many診断モデル。当初、私は患者モデルに次の方法で診断にアクセスさせました。
:has_many :diagnoses, :through => :records
ただし、これに関して私が抱えていた問題は、PatientモデルがRecordモデルとは独立してDiagnosisオブジェクトを作成できるようにすることでもありました。たとえば、入院中に患者は新しい状態と診断される可能性があります。しかし、彼女は病状(事前診断)を持っていた経験もあるかもしれないので、新しいモデルを作成することに頼ることなく、それを追跡したいと思います。
ここで説明するように、モデルが次のようになるように、ポリモーフィックアソシエーションを使用してみました。
class Patient < ActiveRecord::Base
has_many :records
has_many :diagnoses, :as => :medical_history
# ...
end
class Record < ActiveRecord::Base
belongs_to :patient
has_many :diagnoses, :as => :medical_history
# ...
end
class Diagnosis < ActiveRecord::Base
belongs_to :medical_history, :polymorphic => true
# ...
end
私が抱えている問題は、Recordオブジェクトを介してDiagnosisオブジェクトを正常に作成できますが、 p.diagnoses
(p
Patientオブジェクトは)呼び出すと、期待どおりにすべてのDiagnosisオブジェクトにアクセスできないことです。
繰り返しになりますが、私が望んでいるのは、RecordモデルまたはPatientモデルのいずれかを介して診断オブジェクトを作成できることですが、Patientモデルがそれ自体またはRecordモデルを介して作成されたすべてのDiagnosisオブジェクトにアクセスできるようにすることです( RecordモデルはPatientモデルに属しているため、これは可能です)。
これは、ポリモーフィックな関連付けがどのように機能するかを実際には理解していないことであり、ポリモーフィックな関連付けも完全に誤用している可能性があると確信しています。だから私はすべての助けに感謝します。ありがとう!