Сериализаторы активной модели - неопределенный метод 'cached'
Я пытаюсь использовать сериализаторы Active Model для кэширования JSON, используя множество руководств, которые я там видел, все они рекомендуют использовать встроенный механизм кэширования следующим образом:
class CacheSerializer < ActiveModel::Serializer
cached
delegate :cache_key, :to => :object
end
и это мой базовый сериализатор, от которого должны наследоваться все другие кэшируемые сериализаторы, однако я всегда получаю следующее:
undefined local variable or method `cached' for CacheSerializer:Class
просматривая документацию, я также попытался использовать ключ кеша: "бла-бла", который выдал ту же неопределенную ошибку метода.
У меня включено кэширование и настроено хранилище кеша, кэширование работает во всех других частях приложения.
есть идеи?
источник: https://robots.thoughtbot.com/fast-json-apis-in-rails-with-key-based-caches-and
1 ответ
Кэширование версии сериализатора активной модели>= 0.9.0
Поскольку кэширование еще не реализовано в более новых версиях AMS >= (0.9.0) из-за перезаписи, вы можете использовать встроенные в Rails функции кэширования.
def index
trips = Trip.all
json = cache ['v1', trips] do
render_to_string json: trips
end
render json: json
end
Он не будет работать в разработке по умолчанию, потому что кэширование отключено для режима разработки.
Вы можете скопировать строку конфигурации из вашего production.rb в development.rb просто для проверки работоспособности:
config.action_controller.perform_caching = true