sco*_*chi 14 ruby rake ruby-on-rails
Rails根据需要进行模型加载.对于我正在编写的rake任务,我需要能够遍历所有ActiveRecord::Base
实例(这是可能的ActiveRecord::Base.send(:subclasses)
).
但是,为了使上述工作,它们必须已经加载.有人知道强制所有模型加载的方法吗?理想情况下,我不想一直浏览,app/models
因为我想要抓住插件添加的模型.
DSi*_*mon 41
我需要为rake任务加载所有模型来检查所有记录的有效性,并找到了方便的方法eager_load
,可以像这样使用:
Rails.application.eager_load!
tig*_*tig 15
铁轨2:
Dir[Pathname(RAILS_ROOT) + 'app/models/**/*.rb'].each do |path|
require path
end
Run Code Online (Sandbox Code Playgroud)
铁轨3:
Dir[Rails.root + 'app/models/**/*.rb'].each do |path|
require path
end
Run Code Online (Sandbox Code Playgroud)
其他方式:
(ActiveRecord::Base.connection.tables - %w[schema_migrations]).each do |table|
table.classify.constantize rescue nil
end
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
8039 次 |
最近记录: |