系统信息:
代码如下:
module ProductsHelper
def get_cs_case_count cs_id
logger.debug "**************** cs_id is: #{cs_id}"
count = CaseSet.find(cs_id).testcase.count
logger.debug "**************** case count is: #{count}"
return count
end
end
代码的用处是在页面 erb 模板上调用,返回当前的 CaseSet 有多少的 case, Product 有多个 CaseSet, 每个 CaseSet 有很多 Textcase 在一个页面上会有多次调用。
----------- 以上是业务说明-----分割-------------
第四行,我开始写的是
count = CaseSet.find_by('id', cs_id).testcase.count
发现 find_by 返回的对象被缓存了,每个页面上展示的 count 都是一样的,于是修改为:
count = CaseSet.find_by('id', cs_id, force_reload: true).testcase.count
但是无效...(这个修改的来源如下:http://guides.ruby-china.org/association_basics.html 章节 4.1.1.1) 尝试做如下修改:
count = CaseSet.find(cs_id).testcase.count
好了...
作为一个第一次写 rails 的苦手,哪位大神讲解下到底是因为什么原因呢?find 和 find_by 的缓存机制有什么不同么?