ruby-on-rails – 动态加载STI类
发布时间:2020-12-17 02:18:19 所属栏目:百科 来源:网络整理
导读:场景:我的Rails 3.2应用程序中有许多STI模型.有时,我使用父类来查询子类的数据库,如下所示: class ParentObject ActiveRecord::Baseendclass ChildObject ParentObjectendclass User ActiveRecord::Base has_many :parent_objectsend User.find(1).parent_
场景:我的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 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |