我有一个用户可以有很多保存的搜索和大量的任务。我使用以下使用俄罗斯娃娃手动过期缓存
- 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
宝石之前一直在做的,但我无法弄清楚如何做到这一点。
看看我以前的答案,以一个非常类似的问题。 http://stackoverflow.com/questions/15194270/rails-cache-key-generated-as-activerecordrelation/15206742#15206742 – 2013-03-13 15:01:13
如果我读了你的代码,'user.tasks'仍然会被执行。此外,它将始终执行,因此它是当前代码的更糟糕的选项。 – jvnill 2013-03-13 19:09:00