3

ドキュメントへの参照を含む特定のモデルが必要です。ほとんどのモデルはpostgresに保存できます。モデルはゲームの「レベル」用です。レベルデータ自体をドキュメント内に保存したいのですが、これはSQLで複雑なツリーを作成するよりも理にかなっています。

mongoidをインストールしてpostgresを使用できます。ただし、mongoid gemをインストールした後は、mongoid(非アクティブレコード)ドキュメントのスキャフォールディングしかできないようです。

問題は、他のテーブルへの参照があり、それをMongoidモデル内でリンクする方法が必ずしもわからないことです。

質問:

  1. モンゴイドの代わりにアクティブレコードでスキャフォールディングを強制的に発生させるにはどうすればよいですか。その逆も同様です。 編集:ここで部分的に回答:Mongoidのインストール後にActive Recordジェネレーターを使用しますか?(2番目の答えは機能しますが、簡単に行き来する方法がわかりません)

  2. アクティブなレコードモデルからドキュメントを参照する簡単な方法はありますか(ドキュメントにはそれらを混ぜないでくださいと書かれていますが、私がやろうとしていることには理想的です)。

  3. それらを混在させることができない場合、postgres/activeレコードテーブルからドキュメントを参照させるにはどうすればよいですか。つまり、両方のデータを同時に取得するにはどうすればよいですか?

ありがとう!

4

1 に答える 1

7

あなたの最初の質問に関して、理想的な解決策は、参照された投稿の最初の答えに沿ったものです。ただし、移行を生成する代わりに、代わりにモデルを生成します。したがって、Active Recordモデルが必要な場合は、次のように実行します。

rails g active_record:model

2番目と3番目の質問については、Active RecordモデルをMongoidドキュメントに関連付けるには、ObjectIdを文字列としてモデルに格納するだけです。次に、レコードを取得したら、文字列から新しいObjectIdを作成し、それを使用して関連ドキュメントをクエリします。

次のように、文字列からオブジェクトIDを作成できます。

BSON::ObjectId.from_string("object_id_string")

ActiveRecordとMongoidをミキシングしてマッチングするときに、オーム内の関係を簡単に追跡する簡単な方法はありません。そのため、Rubyコードを介して実行する必要があるのではないかと思います。

Railsで定義するモデルは、いずれかのORMの基本クラスを拡張し、お互いを認識しません。これらのORMの上にレイヤーとして機能するプロジェクトがあるかもしれませんが、私は現時点で存在するものに精通していません。

于 2012-05-29T15:24:32.187 に答える