我是MVC的新手。我正在使用Padrino和MongoMapper以及Haml来尝试创建这个应用程序。
我有一个项目数据库,每个项目都有一个与之关联的哈希,称为“params”。这个哈希有一些必需的键,但主要是任意/随机键。有些键具有一组有限的允许值。
例如:
item.params [“password”]没有一组有限的可能值。
item.params [“color”]必须是%w {red blue green}
之一为此哈希中的项目创建编辑器的最佳方法是什么?我想要一个自由格式值的文本字段和有限值的菜单。我也希望这些菜单有“创建新”作为底部选择,所以我不能只对所有有限值集进行硬编码。
我能想到的最好的事情是在数据库中有一个新的集合(表),它只是一个默认值的哈希值。如果您的密钥不在此哈希中,则会出现一个文本框。
似乎必须有更好的方法。
答案 0 :(得分:1)
您的问题与此问题非常相似:mongodb and mongomapper
我认为您可能希望使用“度量单位”构建“类型”集合...因此您的“类型”集合将具有以下条目:
{"_id" : "password", "display" : "password"}
{"_id" : "user_name", "display" : "text", "restrictions" : ["max_length": 20]}
{"_id" : "eye_color", "display" : ["red","blue","green"], "restrictions" : ["single"]}
很明显,渲染这些东西的逻辑都必须在Ruby方面。但是,在RDBM中尝试过这些东西后,这肯定会更容易。
是的,这里的弱点是你最终可能会为每个字段查询一次“类型”集合。因此,如果您显示10个字段,则会进行10次查询。它可能听起来有点蹩脚,但它基本上是你的MySQL数据库正在做的事情。你可能想要为“类型”集合构建一个“缓存”层,因为你可能希望它永久地“在内存中”。