当我输入Rails.cache.clear
时,Rails创建的所有缓存都将被清除。但是在生产环境中,我在config/environments/production.rb
中设置了config.cache_classes = true
。
但是,有时候,我需要清除特定类(在我的情况下为特定ActiveRecord模型)的缓存,而不是全部。
如何清除为特定ActiveRecord模型制作的Rails缓存?
答案 0 :(得分:0)
Rails.cache.delete("/posts") # for model Post
Rails.cache.delete("/posts/id") # for single post
ActiveRecord::Base.connection.query_cache.clear
您可能希望显式调用此方法的一个原因是在要求数据库随机化结果的查询之间。否则,缓存将看到相同的SQL查询,并每次都重复返回相同的结果,从而无声地破坏了您期望的随机性。