Rails 4 の 2 つの埋め込みドキュメント間に Mongoid NN 参照関連付けを作成しようとしていますが、これがどのように行われるかを理解するのは難しいと感じています。
以下の関連モデルに HABTM 関連付けを追加することから始めました (Track
およびOption
) が、もちろん、両方が埋め込まれているため、これは許可されていないというエラーが表示されます。
class Brief
embeds_many :tracks
end
class Track
embedded_in :brief
has_and_belongs_to_many :options
end
と
class Category
embeds_many :options
end
class Option
field :name, type: String
field :track_ids, type: Array
embedded_in :category
has_and_belongs_to_many :tracks
def parent
self.category
end
def tracks
self.parent.tracks.where(:option_id => self.id)
end
end
これがなぜなのかを完全に理解しており、親ドキュメントを参照する必要があることはわかっていますが、ここで問題が発生します。
コンソール配列を介してトラック ID を追加しようとしましたtrack_ids
が、以前と同じエラーが発生します。
「問題: トラックが埋め込まれているため、リレーショナル アソシエーションを介してオプション ドキュメントから a(n) トラック ドキュメントを参照することは許可されていません。概要: オプションから a(n) トラックに適切にアクセスするには、参照はルートを通過する必要があります。単純なケースでは、Mongoid がルートの追加の外部キーを保存する必要があります。より複雑なケースでは、Track が複数レベルの深さであり、階層の上位の親ごとにキーを保存する必要があります。」
追加の外部キーを保存したいのですが、どのように、どの形式で保存するのかわかりません。誰かが私を正しい方向に向けることができれば、私はそれを感謝します.