这个问题涉及到使用Ruby on Rails 3与MongoMapper和EmbeddedDocument。此外,ManyAssociation。在设计MongoMapper模型时有没有嵌入类的(代码设计)原因?
http://mongomapper.com/documentation/embedded-document.html
的MongoMapper的例子(在上面的链接)显示出两个独立的类:
class Order
include MongoMapper::Document
many :line_items
timestamps!
end
class LineItem
include MongoMapper::EmbeddedDocument
key :name, String
key :quantity, Integer
end
但这种污染与LineItem全局命名空间。出于上下文的考虑,LineItem是什么?如果我想要另一个模型,比如WishList,还有一个LineItem集合?
因此,有可能嵌入LineItem类的秩序,就像这样:
class Order
include MongoMapper::Document
many :line_items, :class_name => "Order::LineItem"
timestamps!
class LineItem
include MongoMapper::EmbeddedDocument
key :name, String
key :quantity, Integer
end
end
虽然这可能是技术上的罚款(是吗?),稍后我会遇到设计问题?它是否使代码太丑陋?太复杂了?
大概,这种Ruby语言的存在意味着有人认为这是一个好主意?
我一直很喜欢Django的一件事是它如何使用“应用程序”来分组相关模型类(并分隔名称空间)。所以我上面的代码也在Rails中实现。