gpt4 book ai didi

ruby-on-rails - 动态加载 STI 类

转载 作者:行者123 更新时间:2023-12-03 15:53:58 25 4
gpt4 key购买 nike

场景:我的 Rails 3.2 应用程序中有许多 STI 模型。有时,我使用父类来查询子类的数据库,如下所示:

class ParentObject < ActiveRecord::Base
end

class ChildObject < ParentObject
end

class User < ActiveRecord::Base
has_many :parent_objects
end

> User.find(1).parent_objects
=> [#<ParentObject ...>, #<ChildObject ...>]

如果我检查生成的 SQL 查询,这就是我(预期)看到的:
WHERE "parent_objects"."type" IN ('ParentObject', 'ChildObject')

问题:在开发环境中,类会在发生更改时动态重新加载。如果我在 ParentObject 上更改某些内容并且不要重新启动 Rails 控制台,这就是我得到的:
> User.find(1).parent_classes
=> [#<ParentObject ...>]

检查生成的 SQL:
WHERE "parent_objects"."type" IN ('ParentObject')

但:
> ChildObject
=> ChildObject(...)
> User.find(1).parent_objects
=> [#<ParentObject ...>, #<ChildObject ...>]

问题:在我的 Rails 应用程序中,我可以在哪里编写一小段代码,以便在每个 Web 服务器请求上重新加载任何 STI 模型?

最佳答案

我找到了解决方案...:

# in development.rb
ActionDispatch::Reloader.to_prepare do
Rails.application.eager_load!
end

关于ruby-on-rails - 动态加载 STI 类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11321101/

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