2011-02-03 6 views
1

私はいくつかのカスタムログを保存するレコードモデル(Active Record)を持っています。Rails 3 1つのMongoMapperモデルと1つ以上のアクティブレコードモデルの間の多相関連

レコードは私のアプリケーションの他のすべてのモデルと多相関係にあり、私は効果的に私のレコードメソッドを他のコントローラにフックしたいものを記録することができます。

別のデータベースにログを持っているために:私は必要なもの

だから私はする必要があります:

  1. は私apllicationで2つの異なるデータベースを管理することができる(1はPostgresの/ ActiveRecordのであり、もう一つはMongoDBの/ MongoMapperです)

  2. ポリモーフィックな関連を生成します私のレコードモデル、現在MongoMapper、そして残りのアクティブレコードモデルの間にあります。

こうすれば、ログをMongoDBデータベースに保存することができます。

ありがとうございました。

答えて

1

はいこれが可能です。

多型関連を作成するには、クラスとIDの両方が必要です。慣習的には、フィールドの名前は<assoc>_type<assoc>_idとなります。あなたはすべての作業をするためにいくつかの配線を行う必要があります。

  1. に必要となる可能性がある任意の他のキーと一緒に(私はMongoMapperは、キータイプとしてClassことができます信じている)正しい種類のキー<assoc>_type<assoc>_idでMongoMapper ::ドキュメントクラスを作成します。
  2. は、おそらくあなたのActiveRecordのモデルは彼らがあなたにMongoMapperログクラスにアクセスできるようにメソッドを追加<assoc>と​​

    def assoc 
        assoc_type.find(assoc_id) 
    end 
    
    def assoc=(input) 
        assoc_type = input.class #STI makes this more complicated we must store the base class 
        asspc_id = input.id 
    end 
    
  3. 方法を定義します。多くのものがある場合は、モジュールを構築し、そのような機能を必要とするすべてのクラスにモジュールを含めることができます。

‡「参照」または「件名」など、あなたのアプリケーションのために意味のある何かを置き換える

+0

おかげでジョンは、私は最後にあなたの答えのおかげで、これを管理します。 – maukoquiroga

関連する問題