场景:我的 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 模型?