Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/62.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 访问ruby计数器缓存_Ruby On Rails_Counter Cache - Fatal编程技术网

Ruby on rails 访问ruby计数器缓存

Ruby on rails 访问ruby计数器缓存,ruby-on-rails,counter-cache,Ruby On Rails,Counter Cache,作为学习练习,我正在玩一个关于类固醇的道具叉。我现在看到的版本在计算标记计数时做了一些我不理解的事情。所以我想我应该使用Proc(普通的旧Rails计数器)来制作一个版本: 大小一样 如果是这种情况,但只是想检查一下就好了。您在迁移中创建了相关列吗?它需要一个地方来存储缓存。调用集合的大小 >> tag.taggings.size 将返回计数器缓存中的值。呼叫#计数 将始终强制sql调用以获取最新计数。是。直接访问标记计数器缓存返回正确的值。对不起,我应该在原始的qn中说明这一点。

作为学习练习,我正在玩一个关于类固醇的道具叉。我现在看到的版本在计算标记计数时做了一些我不理解的事情。所以我想我应该使用Proc(普通的旧Rails计数器)来制作一个版本:

大小一样


如果是这种情况,但只是想检查一下就好了。

您在迁移中创建了相关列吗?它需要一个地方来存储缓存。

调用集合的大小

>> tag.taggings.size
将返回计数器缓存中的值。呼叫#计数


将始终强制sql调用以获取最新计数。

是。直接访问标记计数器缓存返回正确的值。对不起,我应该在原始的qn中说明这一点。
#size
将为您提供标签集合的大小。它并不总是等于计数器缓存值。例如,您可以在此集合中构建一个尚未保存的新对象。在这种情况下,“计数器缓存”列将仅保存保存的对象数,
#size
将返回集合中的对象数,包括新对象数。要获取计数器缓存的精确值,请使用
标记[:标记\u计数]
<代码>标记。标记计数也应该有效,但我不确定。
>> tag.taggings.count
  SQL (0.7ms)   SELECT count(*) AS count_all FROM `taggings` WHERE (`taggings`.tag_id = 16) 
>> tag.taggings.size
>> tag.taggings.count