1

ActiveRecordモデルクラスをMongoDBドキュメントクラスに自動的に変換する必要があります。モデルの属性を読み取り、新しいdocument.rbを生成するrailsジェネレーターを使用してこれを行うことができます。

ActiveRecordモデルクラスが次のようになっている場合:

class Project < ActiveRecord::Base
  attr_accessible :completed, :end_date, :name, :start_date
end

次に、Mongoidの構造を確認する生成されたクラスは次のようになります。

class ProjectDocument
  field :name, type: String
  field :start_date, type: Date
  field :end_date, type: Date
  field :completed, type: Boolean
  field :created_at, type: Time
  field :updated_at, type: Time
end

ただし、モデルごとに1つずつ、異なるドキュメントファイルを保存したくありません。railsアプリケーションを起動するたびに、このドキュメントクラスをその場で生成できるようにしたいと思います。

これは可能ですか?メモリからクラスを生成して使用するこのアプローチは推奨されますか?ARモデル構造の変更に制約はありません。ドキュメントは柔軟なデータ構造であり、変更された列は自動的に追加されます。

4

1 に答える 1

0

私の最初の試みは次のようになります。

klass = Project
new_class = Object.const_set(klass.name + "Document", Class.new)
klass.columns.each do |c|
  new_class.class_eval do
    field c.name.to_sym, type: c.type
  end
end

フィールド タイプを正しく設定するには、ほぼ間違いなく、より複雑なことを行う必要がありますが、これは良い出発点となるはずです。

于 2013-01-18T04:35:42.797 に答える