Rails控制台显示所有型号

ges*_*nha 3 ruby-on-rails ruby-on-rails-4

有没有办法rails console显示所有导轨型号?

像这样的东西:

Models.all
Run Code Online (Sandbox Code Playgroud)

结果如下:

[Customer, Site, Page, Download]
Run Code Online (Sandbox Code Playgroud)

neo*_*neo 11

试试这个:

ActiveRecord::Base.subclasses
Run Code Online (Sandbox Code Playgroud)

这将返回一个数组,因此要获取模型的名称,您需要运行:

ActiveRecord::Base.subclasses.map(&:name)
Run Code Online (Sandbox Code Playgroud)

  • 不需要`send`,`#subslasses`是公开的. (2认同)
  • 这仅适用于加载的文件.因此,在开发环境中,您只能获得模型的子集.这不是生产中的问题,因为模型是急加载的.一个可能的解决方案是运行`Dir ["#{Rails.root}/app/models/**/*.rb"].每个{| f | 放f; 在运行子类之前需要File.basename f}`. (2认同)

not*_*ere 6

赶紧跑:

Rails.application.eager_load!
ActiveRecord::Base.subclasses
Run Code Online (Sandbox Code Playgroud)