5

独自のコレクションに保存し、別のドキュメントに埋め込むことができる Mongoid モデルを作成するにはどうすればよいですか?

4

1 に答える 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_manyandを変更するだけで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 に答える