Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/64.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails 保存记录后已清除ActiveRecord查询缓存_Ruby On Rails_Activerecord - Fatal编程技术网

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
)后使缓存无效不是很好吗?否则,缓存将返回过时/错误的数据,不是吗?好主意。但是,即使策略文件和策略文件分支之间没有关联,查询缓存仍然被清除。所以我认为不应该是因为这个原因。