Ruby on rails 保存记录后已清除ActiveRecord查询缓存
保存记录后,我发现查询缓存已被清除。有人知道有什么问题吗?请参阅以下代码Ruby on rails 保存记录后已清除ActiveRecord查询缓存,ruby-on-rails,activerecord,Ruby On Rails,Activerecord,保存记录后,我发现查询缓存已被清除。有人知道有什么问题吗?请参阅以下代码 ActiveRecord::Base.cache do policy_file = FormUnit.find_by_number("F.XXX") # @query_cache has a value that is a query of policy_file pp ActiveRecord::Base.connection.instance_variable_get("@query_cache")
ActiveRecord::Base.cache do
policy_file = FormUnit.find_by_number("F.XXX")
# @query_cache has a value that is a query of policy_file
pp ActiveRecord::Base.connection.instance_variable_get("@query_cache")
# fetched it from cache
FormUnit.find_by_number("F.XXX")
policy_file_branch = policy_file.forms.build(edition: "10/10", effective_date: "2013/1/1")
# still can fetch it from cache query.
pp ActiveRecord::Base.connection.instance_variable_get("@query_cache")
FormUnit.find_by_number("F.XXX")
policy_file_branch.save
# now, @query_cache was empty and had to fetch it in sql query.
pp ActiveRecord::Base.connection.instance_variable_get("@query_cache")
FormUnit.find_by_number("F.XXX")
end
我不是Rails缓存方面的专家,但为什么不在修改底层数据后扫描缓存呢?在发生更改(
policy\u file\u branch.save
)后使缓存无效不是很好吗?否则,缓存将返回过时/错误的数据,不是吗?好主意。但是,即使策略文件和策略文件分支之间没有关联,查询缓存仍然被清除。所以我认为不应该是因为这个原因。