1

Active Record を使用したプロジェクトがあり、MongoDB を使用して新しい機能を追加したいと考えています。車輪を再発明してサイト全体を書き直すのではなく、MongoMapper を使用するモデルと ActiveRecord (postgres) を使用するモデルの 2 つを統合するにはどうすればよいでしょうか。

私は他の人がそれを成功させたことを発見しましたが、例はありません:

http://groups.google.com/group/mongomapper/browse_thread/thread/ec5ad00e18e7dd2c/887b8b0b904a8f73?lnk=gst&q=activerecord#887b8b0b904a8f73

たとえば、場所の STI Mongo モデルがあり、これを既存の場所の ActiveRecord モデル、つまり都市に関連付けたいと考えています。そしてAuthlogicに基づくユーザーモデル...どうすればそれらを一緒に使用できますか? 正しい方向への1つか2つのポインタに感謝します。

ありがとう、

4

2 に答える 2

2

これは見事に機能しました

場所モデル

  key :location_id, Integer, :required => true

    def location
        Location.find(location_id)
    end

ロケーション モデル

  def self.find_places(id)
    Property.find_by_location_id(id)
  end

  def find_places
    Property.find_by_location_id(id)
  end
于 2010-02-14T01:21:32.587 に答える
1

型キャストも使用できます。

location_id を mongodb に格納するだけでなく、クラス メソッドに実装しfrom_mongoto_mongoLocation クラスで mongomapper が各 Location インスタンスを mongo の安全で使いやすい方法でシリアル化できるようにすることができます。

簡単な (istc) 例:

場所モデル

key :location, Location, :required => true

ロケーションモデル

def self.to_mongo(location)
  location[:id]
end

def self.from_mongo(location_id)
  find(location_id)
end

もちろん、これは前の回答とまったく同じ例です。ここでの優れた点は、必要に応じてより多くのデータを使用して完全な文字列をシリアル化できるため、mongo からのデータのクエリと取得が容易になることです。

たとえば、location_id と座標を使用すると、geodb を模倣して、同じ緯度の場所をマップ/縮小できます。(ばかげた例、私は知っています)

参照: MongoMapper のその他の素晴らしい機能

于 2010-08-27T14:09:13.107 に答える