は、次のMongoidモデルこのモデル噴霧クラスフィールドの値は?
class Doc
include Mongoid::Document
field :name, type: String
embeds_many :images
embeds_many :videos
end
class Image
include Mongoid::Document
embeds_many :urls
embeds_many :captions
embedded_in :Doc
end
class Video
include Mongoid::Document
embeds_many :urls
embeds_many :captions
embedded_in :Doc
end
class Url
include Mongoid::Document
embedded_in :image
embedded_in :video
field :url, type: String
end
class Caption
include Mongoid::Document
embedded_in :image
embedded_in :video
field :caption, type: String
end
対
class Doc
include Mongoid::Document
field :name, type: String
embeds_many :images
embeds_many :videos
end
class Image
include Mongoid::Document
field :url, type: String
field :caption, type: String
embedded_in :Doc
end
class Video
include Mongoid::Document
field :url, type: String
field :caption, type: String
embedded_in :Doc
end
を考えてみましょうどのような他の上、各モデルの利点は?
最初の方が簡潔ですか、それともurl.urlポイントに霧化して後でクエリを制御する必要がありますか?
したがって、値がタグのように一意でない場合は、タグと呼ばれるクラスをタグの名前を格納する単一の文字列で保持します。 – Theta
そしてそのタグの例では、has_many関係はembedded_inリレーションよりも優れているでしょう。なぜなら、今度はタグのインスタンスを1つしか持たないからです。 – Theta
各タグは多くのメディアを持つことができるのでおそらくhas_and_belongs_to_manyリレーションを使用します。各メディアに多数のタグを付けることができます。 –