Сценарий: в моем приложении 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 я могу написать небольшой фрагмент кода, который будет перезагружать любые модели STI при каждом запросе веб-сервера?