0

私はMVCが初めてです。このアプリケーションを作成するために、MongoMapper と Haml で Padrino を使用しています。

アイテムのデータベースがあり、それぞれに「params」と呼ばれるハッシュが関連付けられています。このハッシュにはいくつかの必要なキーがありますが、ほとんどは任意の/ランダムなキーです。一部のキーには、許容値の有限セットがあります。

例えば:

item.params["password"] には、可能な値の有限セットがありません。

item.params["color"] は %w{red blue green} のいずれかでなければなりません

このハッシュ内の項目のエディターを作成する最良の方法は何ですか? 自由形式の値用のテキスト フィールドと有限値用のメニューが必要です。また、これらのメニューの一番下の選択肢として「Create New」を表示したいので、すべての有限値セットをハードコードすることはできません。

これに対して私が思いつく最善の方法は、デフォルト値の単なるハッシュである新しいコレクション (テーブル) を DB に持つことです。キーがこのハッシュに含まれていない場合は、テキスト ボックスが表示されます。

しかし、もっと良い方法が必要なようです。

4

1 に答える 1

1

あなたの質問はこれに非常に似ているようです: mongodb と 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 データベースが実行していることです。おそらく永久に「インメモリ」にしたいので、「タイプ」コレクションの「キャッシング」レイヤーを構築することをお勧めします。

于 2010-06-25T02:31:46.683 に答える