入れ子になっていて問題を起こしている一連のRailsモデルを作成しようとしています。基本的には、Institutions
がチェーンの先頭にあり、多くはIntellectualObjects
です。 IntellectualObjects
には、それぞれGenericFiles
が多数あります。これまでのところ、とても簡単です。 IntellectualObjects
とGenericFiles
の両方とも、多くの場合、PremisEvents
である必要があります。これは私が困っているところです。 IntellectualObjects
は、自身のPremisEvents
を持ち、GenericFiles
が所有するPremisEvents
にリンクする必要があります。Railsで複雑なネストされたクラスを作成する方法
has_many :premis_events
のモデルを設定した場合は、問題なしでイベントを作成できますが、イベントの完全なリストを取得しようとすると、GenericFiles
に関連付けられたイベントは表示されません。上記の行の下にhas_many :premis_events, through: :generic_files
という行を追加すると、IntellectualObject
のすべてのイベントにアクセスできますが、IntellectualObjects
の場合はPremisEvents
を正しく作成できません - イベントは作成されますが、正しく関連付けられませんすべて)を知的オブジェクトと結びつけるので、イベントのリストに終わることはありません。
IntellectualObjects
に関連付けられたイベントとGenericFiles
に関連付けられたイベントの両方のタイプがIntellectualObject
から取得できるようにする方法はありますか?
IntellectualObject
モデルの関連部分:
belongs_to :institution
has_many :generic_files
has_many :premis_events, through: :intellectual_objects
has_many :premis_events, through: :generic_files
has_many :checksums, through: :generic_files
accepts_nested_attributes_for :generic_files
GenericFile
モデルの関連部分:
belongs_to :intellectual_object
has_many :premis_events
has_many :checksums
accepts_nested_attributes_for :checksums
PremisEvent
モデルの関連部分:
belongs_to :intellectual_object
belongs_to :generic_file
したがって、 'PremisEvent'は' GenericFile'または 'IntellectualObject'に属していますか?しかし、両方の決して? –
種類。 'GenericFiles'は' IntellectualObjects 'に属しているので 'GenericFile'に属する' PremisEvents'も 'IntellectualObject'に属します。さらに、「知的客体」にのみ属する「PremisEvents」もあります。 – user3254621