在我的應用程序中,我有三種感興趣的模型。第一種是患者模型,它具有記錄模型。同樣,記錄模型has_many診斷模型。起初我有患者模型通過訪問診斷:在Rails中可能會使用模型的多態關聯3
:has_many :diagnoses, :through => :records
但是我有這個問題是我也希望患者模型,以便能夠建立一個診斷對象的獨立記錄模式的。例如,在入院期間,患者可能被診斷出患有新病症。不過,她也可能有病史(先前的診斷),所以我想跟蹤這一點,而不必訴諸於創建新模型。
我試着使用多態關聯描述here,這樣我的模型看起來像:
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
我遇到的問題是,雖然我可以成功地通過記錄對象創建診斷對象,當我打電話p.diagnoses
(其中p
是Patient對象),它不允許我訪問所有診斷對象,就像我期望的那樣。
重申,我想要的是能夠通過Record模型或Patient模型創建Diagnosis對象,但能夠讓Patient模型訪問通過自身創建的所有Diagnosis對象或通過Record模型(這應該是可能的,因爲Record模型屬於Patient模型)。
我很確定這是我不真正瞭解多態關聯是如何工作的,我可能完全濫用多態關聯。所以我感謝所有的幫助。謝謝!
感謝pduey,我已經得到了這個工作使用類似於你的第二個選項 - 這只是很高興知道我並沒有完全脫離使用多態關聯標記(儘管如果有人不同意我很高興聽到爲什麼)。 – oort