独自のコレクションに保存し、別のドキュメントに埋め込むことができる Mongoid モデルを作成するにはどうすればよいですか?
質問する
1280 次
1 に答える
6
簡単に言えば、できません。
2 つの Mongoid ドキュメント間で埋め込み関係を使用する場合、これは子モデルを独自のコレクションに含めたくないためです。埋め込まれたドキュメントは文字通り、親に埋め込まれています。
あなたが Mongoid を初めて使用するかどうかはわかりませんが、実際に探しているのは、子ドキュメントが親ドキュメントの ID への参照を格納する、従来の RDBMS リレーションシップのように動作する参照リレーションシップです。これに関する Mongoid のドキュメントはここから始まります。
これらの組み込みモデルを考えると、2 つを切り替えるのは非常に簡単です。
class Person
include Mongoid::Document
field :name
embeds_many :phone_numbers
end
class PhoneNumber
include Mongoid::Document
field :area_code
field :number
embedded_in :person
end
embeds_many
andを変更するだけでembedded_in
、次のようになります。
class Person
include Mongoid::Document
field :name
has_many :phone_numbers
end
class PhoneNumber
include Mongoid::Document
field :area_code
field :number
belongs_to :person
end
そして、それはうまくいくでしょう。これで、次のようなステートメントを使用して、電話番号を直接クエリするなどのことができるようになりますPhoneNumber.where(:area_code => "212")
。
于 2012-06-14T00:11:51.973 に答える