【问题标题】:MongoMapper: Get all modelsMongoMapper:获取所有模型
【发布时间】:2011-08-15 23:44:34
【问题描述】:

有谁知道获取包含MongoMapper::Document 的所有模型的类名的简单方法?

MongoMapper 类似乎没有 ActiveRecord::Base.subclasses 的等价物。

我能想到的最好办法是使用MongoMapper.database.collection_names 和一些ObjectSpace hack。

更复杂的是我在app/models 文件夹中有模块(子文件夹)。所以,class DS::Thingy 在我的apps/models/ds/thingy.rb 中。

【问题讨论】:

    标签: ruby-on-rails ruby mongodb mongomapper


    【解决方案1】:

    怎么样:

    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 的 document.rb 做了:

    included do
      extend Plugins
      extend Translation
    end
    

    所以你可能需要复制它。

    【讨论】:

    • 酷,是的,我喜欢它。我会稍微修改一下,但基本的想法是好的,谢谢!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-10-16
    • 2019-07-17
    • 1970-01-01
    • 2014-12-18
    • 2017-04-21
    • 2018-09-02
    相关资源
    最近更新 更多