MongoMapper: Получить все модели - PullRequest
0 голосов
/ 16 августа 2011

Кто-нибудь знает простой способ получить имена классов всех моделей, в которые включено MongoMapper::Document?

Класс MongoMapper не имеет эквивалента ActiveRecord::Base.subclasses.

Лучшее, что я могу придумать, это использовать MongoMapper.database.collection_names и некоторые ObjectSpace хаки.

Еще одним осложнением является то, что у меня есть модули (подпапки) в папке app/models. Итак, class DS::Thingy в моем apps/models/ds/thingy.rb.

1 Ответ

2 голосов
/ 16 августа 2011

Как насчет чего-то вроде:

class MongoModels
  def self.all
    @@models ||= []
  end
end

module MongoMapper
  module Document
    def self.included(klass) 
      MongoModels.all << klass
    end
  end
end

тогда MongoModels :: all вернет массив моделей.

MongoMapper's document.rb делает:

included do
  extend Plugins
  extend Translation
end

Так что, возможно, вам придется повторить это.

...