我希望能够迭代并检查 Rails 应用程序中的所有模型。在伪代码中,它看起来像:
rails_env.models.each do |model|
associations = model.reflect_on_all_associations(:has_many)
... do some stuff
end
我的问题是如何检查我的 Rails 应用程序以获取模型集合 (rails_env.models) ?
与nathanvda的响应类似,使用camelize而不是大写来支持带下划线的模型文件,并使用String#constantize而不是Kernel.const_get。
此外,如果您在模型文件夹中保留非活动记录模型(例如,用于合并搜索逻辑的搜索类),您需要检查该类是否是活动记录模型。
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
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)