1

我有一个当前使用 activerecord 来存储和查询产品的 rails 应用程序。

每个产品都有一个类别和子类别,每个子类别由我可以在应用程序中创建的多个字段定义。由此,当用户想要输入特定产品时,他们会被相关的表单字段所压制。

这已经变得非常复杂,自从听说过 mongodb 和 mongomapper 之后,我想或希望我从一开始就使用 mongomapper 来创建它!

问题是我想知道在 mongodb 中为这个应用程序建模的最佳方法???

我正在考虑拥有一个具有公共领域的产品模型,然后让类别模型继承自具有不同领域的产品模型。

这听起来正确吗?

问题也是我希望用户能够从应用程序中创建自己的类别和字段。例如,当用户创建具有速度和门数等字段的汽车类别时,我该如何做到这一点。然后我需要能够使用这些字段创建表单,以便输入未来的汽车。

任何人可以帮助我的任何想法、指示或示例都会很棒。

非常感谢瑞克

4

1 回答 1

1

好的,我不是 Ruby/Mongomapper 专家,所以我无法将其映射到“模型”中。但是,如果您从 Mongo 的角度来看,这就是您可能希望数据在 Mongo 中的显示方式。

集合: 类别

{"_id" : "car"}
{"_id" : "vintage_car", "parent" : "car", "fields" : ["year" : "integer", "original_parts" : "boolean", "upgrades" : "text"] }

系列:产品

{"_id" : "1234", "name" : "Model-T", "category" : "car", "sub-category" : "vintage_car", "values" : ["year" : 1942, "original_parts" : false, "upgrades : "XM Radio"] }

所以你在这里所拥有的非常简单。您有一个包含所有类别和子类别的集合。如果一个对象是一个“子类别”,它将有一个“父”字段集。如果没有“父”字段,则该对象是“类别”。

每个子类别都有一个“字段”元素。“字段”实际上是一对数组。这将使渲染变得容易。如果有人输入一辆老爷车,您查找“老爷车”类别,然后循环遍历“字段”以呈现相应的输入框。我使用了像“integer”和“boolean”这样的简单的东西,但是你真的可以在这里放任何你想要的东西(“datepicker”,“checkbox”,...)这完全取决于你。

现在产品本身基本上存储了对 Category 和 Sub-category 的引用。它还存储您输入的所有字段的值。

所以产品拥有它需要的所有数据,这应该使每个产品都非常容易呈现。加载产品和适当的子类别,您将获得动态呈现页面所需的所有信息。

编辑

在回复评论时,Category中的“字段”可以使用度量单位构建:

..."fields" : [{"length","meters","float"},{"weight","kg","float"},...]

于 2010-06-24T03:52:33.063 回答