у меня есть пользователь, у которого может быть много сохраненных поисков и много задач. я кэширую их, используя следующие
- cache user do
- user.tasks.each do |task|
- cache task do
# do something with task
- cache user do
- user.saved_searches.each do |search|
- cache search do
# do something with search
Я добавил возможность обновлять пользователя с помощью опции touch
всякий раз, когда обновляется какая-либо из этих записей. проблема, которую я хочу прояснить, заключается в следующем сценарии:
Я обновил поиск, в котором истекает срок действия кеша для этого поиска и, по сути, кеша для пользователя. поскольку срок действия кеша для пользователя истек, будет выполнено user.tasks
.
Есть ли способ предотвратить это?
Я подумываю добавить ключ к cache user
и вручную истечь срок действия кеша, что я делал до того, как использовал cache_digest
драгоценный камень, но я не могу понять, как это сделать.
user.tasks
все равно будет выполняться. более того, он всегда будет выполняться, так что это худший вариант, чем текущий код. - person jvnill   schedule 13.03.2013