gpt4 book ai didi

ruby-on-rails-3 - 除非被触摸,否则 ActiveRecord::Base.send(:descendants) 不会返回所有模型

转载 作者:行者123 更新时间:2023-12-04 00:47:04 24 4
gpt4 key购买 nike

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

我正在尝试获取一个包含我的 Rails 3 应用程序中所有模型的数组。我正在尝试:

ActiveRecord::Base.send(:descendants)

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

我的rails app中有十几个模型,但是

ActiveRecord::Base.send(:descendants) 

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

另一条可能有用的附加信息是我正在使用 devise 进行身份验证。就用户模型而言,也许设计正在以所需的方式做事,而我没有对其他模型做这些事情。

非常感谢。

最佳答案

如果 cache_classes 已打开(默认情况下它在开发中打开,而不是在生产中打开),请先运行:

Rails.application.eager_load!

关于ruby-on-rails-3 - 除非被触摸,否则 ActiveRecord::Base.send(:descendants) 不会返回所有模型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7230041/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com