Abh*_*mar 4 mongoid ruby-on-rails-3
有没有办法找到我的rails应用程序中的所有Mongoid模型名称.我可以通过获取app/models文件夹中的所有文件找到所有模型,但我特别想要mongoid模型名称.
Ste*_*eve 13
如果您的模型类已经加载,那么您可以通过查找包含Mongoid :: Document模块的所有类来列出它们.
Object.constants.collect { |sym| Object.const_get(sym) }.
select { |constant| constant.class == Class && constant.include?(Mongoid::Document) }
Run Code Online (Sandbox Code Playgroud)
或者如果你只是想要类名:
Object.constants.collect { |sym| Object.const_get(sym) }.
select { |constant| constant.class == Class && constant.include?(Mongoid::Document) }.
collect { |klass| klass.name }
Run Code Online (Sandbox Code Playgroud)
如果你需要在运行之前强制加载模型,你可以这样做(在Rails 3中):
Dir["#{Rails.root}/app/models/**/*.rb"].each { |path| require path }
Run Code Online (Sandbox Code Playgroud)
(假设您的所有模型都在app/models
子目录中)
elt*_*are 12
您可以在Mongoid 3.1及更高版本中执行此操作: Mongoid.models
如果您处于未自动加载模型的Rails开发模式,请运行Rails.application.eager_load!
以加载整个应用程序.