gus*_*ans 17 ruby activerecord ruby-on-rails
我需要一个包含所有模型(class_names)的列表,其末尾有"Cube"模式.
例:
我的所有模型:ModelFoo,ModelBar,ModelBarCube,Mode2BarCube
我需要的:
['ModelBarCube','Mode2BarCube']
Sen*_*Uka 23
由于Rails不加载类,除非它需要它们,您必须从文件夹中读取模型.这是代码
Dir.glob(Rails.root + '/app/models/*.rb').each { |file| require file }
@models = Object.subclasses_of(ActiveRecord::Base).select { |model|
model.name[-4..-1] == "Cube"
}
Run Code Online (Sandbox Code Playgroud)
小智 21
在rails 3中你要交换@models:
@models = ActiveRecord::Base.subclasses.collect { |type| type.name }.sort
Run Code Online (Sandbox Code Playgroud)
对于Rails 3
@models = ActiveRecord::Base.
descendants.
select{|x| x.name[-4..-1] == "Cube"}
Run Code Online (Sandbox Code Playgroud)
@models = ActiveRecord::Base.descendants.map(&:name)
Run Code Online (Sandbox Code Playgroud)
为您提供所有模型名称,这些名称可以继承表单,也可以ActiveRecord::Base是任何现有模型的子类.
| 归档时间: |
|
| 查看次数: |
17012 次 |
| 最近记录: |