活动模型序列化器 - 未定义的方法 'cached'

active model serializers - undefined method 'cached'

我正在尝试使用活动模型序列化器来缓存 JSON,使用我在那里看到的许多指南,他们都建议使用内置缓存机制,方式如下:

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.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 = 真

issue Github 上也有关于此的文件。