Как истечь срок действия кэша действий при обновлении базовой модели в Rails 6?
Я использую кэширование действий, которое работает нормально с Rails 6.
Проблема в том, как истечь срок действия кеша при обновлении базовой модели?
Согласно руководствам Rails
См. гем actionpack-action_caching. См. обзор срока действия кэша на основе ключей DHH для нового предпочтительного метода.
Согласно проблеме с драгоценным камнем Action Caching , использование Rails Observer для очистки кеша будет работать.
https://github.com/rails/rails-observers#action-controller-sweeper
Но Rails Observer , похоже, не работает с Rails 6.
Итак, как истечь кеш с помощью
after_save
перезвонить?
1 ответ
Вы можете передать свой собственный cache_path, чтобы истечь срок действия ключа. Однако вам все равно нужно получить какую-то запись, чтобы вычислить ее.
class MyController < ApplicationController
before_action :set_record
caches_action :show, expires_in: 1.hour, cache_path: ->(_) { show_cache_key }
def show; end
private
def set_record
@record = Record.find(params[:id])
end
def show_cache_key
@record.cache_key
end
end
Выполнение аннулирования кеша вручную — невероятно утомительный и подверженный ошибкам процесс, поэтому я бы не стал аннулировать ключи в
after_step
и вместо этого используйте истечение срока действия на основе ключа.