Использование memcached в приложении Rails с наследованием одной таблицы?
-
22-07-2019 - |
Вопрос
У меня есть приложение Rails, которое использует STI для обработки разных типов пользователей, таких как:
class Admin < User
...
end
Я хочу использовать memcached, но получаю страшный " неизвестный класс / модуль " ошибка. Я попытался предварительно загрузить все моих моделей ActiveRecord, но безрезультатно. Первый запрос работает как обычно, но первый извлекает ошибки из memcached. Я следовал этим инструкциям , но безрезультатно.
Возможно ли использование memcached с наследованием одной таблицы?
Решение
Я думаю, это связано с отложенной загрузкой классов. Когда вы вызываете его из memcached, определение класса не загружается, а затем вы получаете ошибку.
Обходное решение, которое я использую:
Admin #lazily load the class definition
# do whatever that has cached Admins
Другие советы
Проблема заключалась в том, что метод login_from_session restful_authentication загружался до запуска вышеупомянутого before_filter. Предварительная загрузка пользовательских классов STI в начале этого метода работала.
просто быстрый комментарий, я прочитал, что использование require_dependency 'admin' сейчас предпочтительнее, не знаю почему
require_dependency 'region'
Кроме того, я обнаружил, что в этом нет необходимости, если вы добавите
config.cache_classes = true
в ваш production.rb (или development.rb для тестирования), это похоже на все модели для кэширования