如何强制Rails加载所有模型?

Rails确实按需加载模型。 对于我正在编写的rake任务,我需要能够遍历所有ActiveRecord::Base实例(可以使用ActiveRecord::Base.send(:subclasses) )。

但是,为了使上述工作,它们必须已经加载。 有人知道强制所有模型加载的方法吗? 理想情况下,我不想通过app/models因为我想要捕获插件添加的模型。

铁轨2:

 Dir[Pathname(RAILS_ROOT) + 'app/models/**/*.rb'].each do |path| require path end 

导轨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 

我需要为rake任务加载所有模型来检查所有记录的有效性,并找到了方便的方法eager_load ,它可以像下面这样使用:

Rails.application.eager_load!