有没有一种方法可以获取Rails应用程序中所有模型的集合?
有没有一种方法可以获取Rails应用程序中所有模型的集合?
有没有办法获得Rails应用程序中所有模型的集合?
基本上,我可以这样做:-
Models.each do |model| puts model.class.name end
admin 更改状态以发布 2023年5月24日
Rails 3、4和5的完整答案是:
如果cache_classes
关闭(默认情况下在开发中关闭,但在生产中启用):
Rails.application.eager_load!
那么:
ActiveRecord::Base.descendants
这确保了应用程序中的所有模型,无论它们在哪里,都已加载,并且您使用的提供模型的任何gems也已加载。
这也应该适用于继承自ActiveRecord :: Base
的类,例如Rails 5中的ApplicationRecord
,并且仅返回其后代子树:
ApplicationRecord.descendants
如果您想了解更多关于如何完成此操作的信息,请查看ActiveSupport :: DescendantsTracker。