2015-03-23 4 views
0

Я пытаюсь использовать Active Serializers для кэширования JSONs, используя множество руководств, которые я видел там, все они рекомендуют использовать встроенный механизм кеширования следующим образом:active model serializers - undefined method 'cached'

class CacheSerializer < ActiveModel::Serializer 
    cached 
    delegate :cache_key, :to => :object 
end 

и это моя база сериализатору которой все остальные кэшируемые сериализаторов должны наследоваться от, однако, я всегда получаю следующее:

undefined local variable or method `cached' for CacheSerializer:Class 

глядя на документацию, я также попытался с помощью ключа кэша: ' bla-bla ', который предоставил ту же неопределенную ошибку метода.

У меня есть кеширование включено и настроено хранилище кешей, кеширование работает во всех других частях приложения.

любые идеи?

источник: https://robots.thoughtbot.com/fast-json-apis-in-rails-with-key-based-caches-and

+0

Какую версию AMS вы используете? В последнее время произошли серьезные изменения в мастер-ветке, которые сильно повлияли бы на это. –

ответ

1

Cache активная версия модели сериализаторов> = 0.9.0

Поскольку кэширование еще не реализована в новых версиях AMS> = (0.9.0) из-за переписывания вы можете использовать Рельсы, встроенные в функции кеширования.

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 = истинный

Существует также на issue поданной Github, в отношении это.

+0

это не помогает, поскольку мы хотим кэшировать отдельные модели и весь набор результатов –

Смежные вопросы