问题标签 [counter-cache]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
2538 浏览

ruby-on-rails - 计数器缓存不更新,但我可以保存到父母和孩子

我添加了一个计数器缓存,但无法更新。但是我可以通过添加新的博客文章来更新父级 - 博客文章模型 - 我可以通过添加新评论来更新子级 - 评论模型。计数器缓存应该通过自动更新 blog_posts.comments_count 字段来跟踪每篇博客文章的评论总数。我将概述我经历的一些步骤,希望有人会注意到我做错了什么。模式转储在最后。

我有一个博客帖子模型:

和一个将 counter_cache 设置为 post 模型的 Comments 模型:

我创建了一个迁移以将 counter_cache 列添加到 blog_posts 表中:

但是迁移无法使用 current_count 更新博客文章。它始终为零。

我打开 Rails 控制台尝试手动更新属性:

但是当我查看数据库时,comments_count = 0。

任何想法都将不胜感激。

我的 schema.db 看起来像这样:

0 投票
1 回答
960 浏览

ruby-on-rails - 具有 aasm 的多个计数器缓存列

我正在寻找一种方法来缓存每个状态的数量。我之前做过计数器缓存,但是有没有办法为每个状态创建多个 counter_cache 列并保持更新,或者我应该在其他地方寻找缓存这些值。

似乎它只是数据库中的 3 列。有任何想法吗?

0 投票
1 回答
298 浏览

linq-to-sql - 如何实现具有并发和事务支持的 Linq-to-Sql 计数器缓存?

我有一个场景,我想要一个问题对象,用户可以同时将答案对象添加到问题对象。问题对象需要维护答案计数。

如何在 Linq2Sql 中执行一个实现,以事务方式保存用户提交给问题的答案对象并更新问题对象的递增答案计数,并在尝试更新问题对象的答案计数时处理任何并发冲突?

0 投票
2 回答
1919 浏览

ruby-on-rails - Rails 模型 counter_cache 列初始化

我正在使用 rspec 进行测试,并使用 hornsby 场景用于测试中使用的对象图。

将计数器缓存列初始化为 0 值而不是让它们未初始化(nil)是一种好习惯吗?或者我应该在创建这些计数器缓存列的迁移中定义默认值?

0 投票
1 回答
659 浏览

ruby-on-rails - counter_cache 在 after_create 钩子中已过时

我依赖模型的 after_create 挂钩中的计数器缓存值。但是,我的钩子在计数器缓存更新之前被调用,从而中断了计算。

有什么方法可以强制计数器缓存“刷新”,以便我始终在 after_create 中看到最新值?

0 投票
2 回答
499 浏览

ruby-on-rails - 访问 ruby​​ 计数器缓存

我正在玩一些acts_as_taggable_on_steroids 作为学习练习。我正在查看的版本做了一些我不明白的计算标签计数的事情。所以我想我会使用 PORC(Plain Old Rails Counters)做一个版本:

当我访问 tag.taggings.count 时,我认为 tagging_counter_cache 是透明访问的,但显然不是?我真的必须明确访问 tag.tagging_counter_cache 吗?

大小相同。

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

0 投票
3 回答
7872 浏览

ruby-on-rails - 如何在 Rails 中实现计数器缓存?

我有一个帖子控制器和一个评论控制器。Post有很多评论,评论属于Post。关联设置为打开 counter_cache 选项,如下所示:

我的表中有一个默认为零的comments_countposts,例如:

create我的评论控制器的操作中,我有以下代码:

我的问题:当@comment.save被调用时,我收到以下错误:

从 comment.rb 中删除:counter_cache => true完全解决了这个问题,所以我假设它是这个模糊错误的原因。我在这里想念什么?如何保存我的评论并让 rails 为我的帖子处理我的 counter_cache?

谢谢!


更新 - 附加应用程序跟踪:

请注意,与 Rails 框架没有直接关系的唯一一行是:

第 6 行如下:


编辑 2:@posts /的@post错字,我的实际应用程序没有错误。

检查@comment,它似乎是完全有效的 - 它返回的正是我所期望的 - 一个新的评论实例,其中包含我传递给它的任何信息buildsave只有在调用该方法时它才会爆炸。

感谢您迄今为止的所有建议。还有其他想法吗?

0 投票
2 回答
2159 浏览

ruby-on-rails - 对于 ActiveReord 中的 has_many 关联,counter_cache 没有递减

我的 Rails 3 应用程序有 2 个模型,第三个模型是它们之间的连接表及其 has_many 关系。基本上,用户和节目由 SavedShow 连接,允许用户保存节目列表:

我注意到 counter_cache 字段(shows_saved_count)会自动递增,但不会递减。问题的核心似乎是从用户列表中删除节目是通过删除完成的,这不会触发 counter_cache 的更新:

但是,我不能在这里调用destroy方法,因为这不仅删除了SavedShow中的User/Show关联,而且还删除了Show对象本身,这不是我想要的。

在这种情况下使用 counter_cache 不合适吗?

早在 2009 年,似乎就有关于这个问题的讨论,并讨论了修复,但我仍然在最新的 Rails 3.0 中看到了这个问题。

我只想在模型中编写自己的自定义处理,但似乎没有我可以挂钩的 after_delete 回调(大概这就是递减首先不起作用的原因)。现在,我自己的代码中只有一个地方可能会删除关联,所以我将手动调用来更新计数器,但这似乎是 ActiceRecord 与 counter_cache 关联的一个基本缺点或错误,我想知道我是否只是错过了一些东西。

如果这确实是 counter_caches 的真正问题,那么最好的解决方法是什么?

0 投票
2 回答
1426 浏览

ruby-on-rails - 单表继承中的 counter_cache

我想知道 counter_cache 是否可以在单表继承中工作。

对于这些模型:

那么以下计数器会起作用吗?

  1. 他们都工作
  2. 他们都没有工作
  3. questions_count工作
  4. 只有simple_questions_countcomplex_questions_count

哪一个?我猜是第 3 个,但我还想要 4 个。如果不是 4,我如何使 4 起作用?

=== 更新 ===

这是一个例子:

所以现在我想要:

我的问题是,单表继承的基本行为是什么:counter_cache => true,是否可以应用于单表继承?

0 投票
2 回答
7235 浏览

ruby-on-rails - counter_cache 实现的问题

我要'耙子中止了!...posts_count 被标记为只读的错误。

我有两个模型:用户和帖子。

我有一个迁移,它将 posts_count 列添加到 users 表中,然后计算并记录每个用户的当前帖子数。

当我运行迁移时,我得到了错误。当然,这是非常明确的,如果我从帖子模型中删除 :counter_cache 声明,例如

迁移运行良好。这显然没有意义,因为您无法以这种方式真正实现它。我错过了什么?