首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何强制Rails加载所有模型?

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

Stack Overflow用户
提问于 2010-07-14 20:03:11
回答 2查看 10K关注 0票数 18

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

但是,要让上面的代码正常工作,它们必须已经加载。有谁知道一种强制所有模型加载的方法?理想情况下,我希望不必通过app/models查看,因为我也希望捕获由插件添加的模型。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2010-07-14 20:06:58

rails 2:

代码语言:javascript
复制
Dir[Pathname(RAILS_ROOT) + 'app/models/**/*.rb'].each do |path|
  require path
end

rails 3:

代码语言:javascript
复制
Dir[Rails.root + 'app/models/**/*.rb'].each do |path|
  require path
end

另一种方式:

代码语言:javascript
复制
(ActiveRecord::Base.connection.tables - %w[schema_migrations]).each do |table|
  table.classify.constantize rescue nil
end
票数 18
EN

Stack Overflow用户

发布于 2015-11-11 00:50:47

我需要为检查所有记录有效性的rake任务加载所有模型,并找到了方便的方法eager_load,它可以简单地使用,如下所示:

Rails.application.eager_load!

票数 50
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/3245838

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档