Rails确实按需加载模型。对于我正在编写的rake任务,我需要能够迭代所有ActiveRecord::Base实例(使用ActiveRecord::Base.send(:subclasses)是可能的)。
但是,要让上面的代码正常工作,它们必须已经加载。有谁知道一种强制所有模型加载的方法?理想情况下,我希望不必通过app/models查看,因为我也希望捕获由插件添加的模型。
发布于 2010-07-14 20:06:58
rails 2:
Dir[Pathname(RAILS_ROOT) + 'app/models/**/*.rb'].each do |path|
require path
endrails 3:
Dir[Rails.root + 'app/models/**/*.rb'].each do |path|
require path
end另一种方式:
(ActiveRecord::Base.connection.tables - %w[schema_migrations]).each do |table|
table.classify.constantize rescue nil
end发布于 2015-11-11 00:50:47
我需要为检查所有记录有效性的rake任务加载所有模型,并找到了方便的方法eager_load,它可以简单地使用,如下所示:
Rails.application.eager_load!
https://stackoverflow.com/questions/3245838
复制相似问题