如何在Rails应用程序中遍历所有模型? [英] How can I iterate through all of the Models in my rails app?

查看:69
本文介绍了如何在Rails应用程序中遍历所有模型?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我希望能够遍历并检查Rails应用程序中的所有模型.用伪代码看起来像:

I would like to be able to iterate over and inspect all the models in my rails app. In pseudo-code it would look something like:

rails_env.models.each do |model|  
  associations = model.reflect_on_all_associations(:has_many)  
  ... do some stuff  
end

我的问题是如何检查我的rails应用程序以获取模型(rails_env.models)的集合?

My question is how do I inspect my rails app to get a collection of the models (rails_env.models) ?

推荐答案

类似于nathanvda的响应,使用camelize而不是大写来支持带下划线的模型文件,并使用String#constantize而不是Kernel.const_get.

Similar to nathanvda's response, use camelize rather than capitalize to support model files with underscores, and use String#constantize rather than Kernel.const_get.

此外,如果您将非ActiveRecord模型保留在models文件夹中(例如,用于合并搜索逻辑的搜索类),则需要检查该类是否为Active Record模型.

Additionally, if you keep non-activerecord models in your models folder (e.g. a search class for consolidating search logic), you'll want to check the class is an active record model.

Dir[Rails.root.join('app/models/*.rb').to_s].each do |filename|
  klass = File.basename(filename, '.rb').camelize.constantize
  next unless klass.ancestors.include?(ActiveRecord::Base)
  next if klass.abstract_class?
  # do something with klass
end

这篇关于如何在Rails应用程序中遍历所有模型?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆