首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >ActiveRecord::Base.send(:后代)不返回所有模型,除非被触摸

ActiveRecord::Base.send(:后代)不返回所有模型,除非被触摸
EN

Stack Overflow用户
提问于 2011-08-29 12:25:06
回答 2查看 1.3K关注 0票数 3

更新:这个问题在Rails 3.2中不再存在

我正在尝试获取一个数组,其中包含了rails 3应用程序中的所有模型。我正在努力:

代码语言:javascript
运行
复制
ActiveRecord::Base.send(:descendants)

为了同样的。类似的讨论也发生在Is there a way to get a collection of all the Models in your Rails app?这个问题上。正如其中一个答案所指出的,我们需要触摸模型才能显示出来。这正是我所面对的问题。

在我的rails应用程序中有十几种型号,但是

代码语言:javascript
运行
复制
ActiveRecord::Base.send(:descendants) 

返回大小为2的数组。该数组只有用户和ActiveRecord::SessionStore::Session模型。在触摸到模型之前,我不会得到其他模型,比如调用Comment.new,我如何在不接触所有模型的情况下得到所有的模型?

另一项可能有用的信息是,我正在使用devise进行身份验证。也许,对于用户模型来说,设计就是以一种理想的方式来做事情,而我并没有用其他模型来做这些事情。

提前谢谢。

EN

Stack Overflow用户

发布于 2013-08-05 14:40:01

如果cache_classes是on的(默认情况下是在开发中,而不是在生产中),那么首先运行以下命令:

代码语言:javascript
运行
复制
Rails.application.eager_load!
票数 4
EN
查看全部 2 条回答
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/7230041

复制
相关文章

相似问题

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