Я хочу кэшировать весь ответ JSON в рельсах. JSON сериализуется с ActiveModel. Я не хочу сериализовать это каждый раз. Это большой сложный список, который не часто меняется.
Прямо сейчас у меня есть
def index
bar = Bar.find(params[:bar_id])
foos = Foos.where(bar_id = bar.id)
render json: foos, status, :ok
end
Я бы хотел сделать что-то вроде
def index
bar = Bar.find(params[:bar_id])
response = Rails.cache.fetch(request.env['PATH_INFO']) do
foos = Foos.where(bar_id = bar.id)
render json: foos, status: :ok
end
response
end
Как мне это сделать?
РЕДАКТИРОВАТЬ: Чтобы уточнить, я хотел бы сохранить это уже построен, так же, как кэширование уже шаблонного представления. Причина в том, что у меня есть сотни таких записей, и каждая запись в свою очередь содержит около дюжины дочерних записей, каждая из которых имеет полдюжины своих собственных записей. В среднем около половины из них приходится перезагружать с помощью вызова db. Сериализатор также должен преобразовать некоторые из этих атрибутов в HTML или выполнить подсчет элементов и отсортировать многие из них. Поскольку это, по большому счету, самая распространенная конечная точка в API, я хочу, чтобы абсолютно все кэшированное уже было сериализовано.