我有一个元素可以拥有一个或一些标题,一个或一些描述以及一个或一些关键字列表。从Web视图中,我们有一些“添加替代标题”按钮。我想知道在Mongoid中设计这种模式的正确方法是什么。
我正在考虑实施这3个解决方案中的一个(可能从最差到最好):
1)添加合理数字的字段
class Video
include Mongoid::Document
field :alt_title_1
field :alt_title_2
field :alt_title_3
field :alt_description_1
field :alt_description_2
field :alt_description_3
field :alt_keywords_1
field :alt_keywords_2
field :alt_keywords_3
end
2)或者,将此字段定义为type:Array
class Video
include Mongoid::Document
field :titles, type: Array
field :descriptions, type: Array
field :keywords, type: Array
end
3)或者,关系复杂
class Video
include Mongoid::Document
embeds_many :titles, :descriptions, :keywords
end
class Title
include Mongoid::Document
embedded_in :video
field :value
end
class Description
include Mongoid::Document
embedded_in :video
field :value
end
class Keyword
include Mongoid::Document
embedded_in :video
field :value, type: Array
end
您认为更有意义吗?那里有更好的解决方案吗?
答案 0 :(得分:3)
我个人最喜欢2。这些只是字符串,因此拥有多个模型没有意义。
答案 1 :(得分:0)
我也会因为与杰夫相同的原因而排名第二。如果我必须验证输入,我会进行自定义验证。