问题标签 [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 回答
292 浏览

ruby-on-rails - 使用 counter_cache 列编写固定装置

编写具有 counter_cache 列的夹具既繁琐又复杂,我尝试在 test_helper.rb 中使用方法 reset_counters 但它不起作用。同样的方式让它工作?

0 投票
1 回答
143 浏览

ruby-on-rails - Mongoid 3.1.6 的未定义方法“reset_counters”

我刚刚将我的 mongoid 更新到了 3.1.6 版本,这样我就可以使用reset_counters方法来跟踪我的模型关系。但就像我在 gem 更新之前所做的那样,我仍然收到此错误:

在我的 Gemfile 我有这个版本:

并且 Gemfile.lock 状态:

这是应该更新计数器的模型:

这是计数器字段所在的模型:

0 投票
2 回答
1475 浏览

ruby-on-rails - Rails:如何增加 counter_cache?

:::::::::::::::::::::::::::::::::::::::::::::::::: :::::::::::::::::::::::::::::::::::::::::::::::::: ::::::::::::::::::::::::::

::: 解决了 :::

能够找出 Vote 模型上的 counter_cache 并在主题中使用它。更新了下面的问题。一旦 Topic 模型有了 votes_count,我所要做的就是把它放在视图中并在控制器中更新我的计数。结果很简单。但是没有找到信息,所以这应该可以帮助其他人,在所有令人困惑的荣耀中。一路向下寻找答案。

干杯

:::::::::::::::::::::::::::::::::::::::::::::::::: :::::::::::::::::::::::::::::::::::::::::::::::::: ::::::::::::::::::::::::

:::编辑:::

:::历史见下文:::

这是对原帖的修改。在我尝试宝石解决方案之前,我真的很接近我所拥有的。我在投票模型上使用了comment_cache ,但现在我不知道如何增加缓存。

并在视图中调用 topic.votes.size,它现在显示没有 Active Record 可枚举的计数。

index.html.erb

但是comment_cache 不允许负数。我仍在对记录使用创建/销毁,而不是在计数中添加和减去一个数字。如何增加和减少?这些方法说我缺少值。目前,@topic.votes.last.destroy 失败是有道理的,因为没有更多的投票可以销毁,因此总数不能小于零。

如何设置以便我增加/减少 comment_cache 值,以便可能出现负数?我尝试了@topic.votes.increment 和@topic.votes.increment_counter 但他们要求我不知道该使用什么的2 个参数。试过了

@topic.increment_counter(:votes_count, params[:id])

但没有运气。

:::::::::::::::::::::::::::::::::::::::::::::::::: :::::::::::::::::::::

:::这条线以下的历史:::

:::::::::::::::::::::::::::::::::::::::::::::::::: :::::::::::::::::::::

再次访问 Rails,我正在尝试对主题进行简单的投票计数器。我想要做的是增加/减少投票记录中的计数(整数)列。

主题 has_may :votes 和 Vote belongs_to :topic

在我用过的topics_controller.rb

但是我得到了一个有趣的 ActiveRecord 键,而不是视图中的值,而不是票数。

index.html.erb:

Rails 控制台虽然增量没有显示:

我想我已经设置了routes.rb好的,但是我不确定双倍

无论如何,我认为这要么是错误的增量方法,要么是我缺少的东西。任何帮助表示赞赏。干杯

0 投票
1 回答
2803 浏览

ruby-on-rails - Rails 4:has_many 中的 counter_cache :通过与依赖项关联::destroy

尽管已经提出了类似的问题:

他们都没有真正解决我的问题。

我有三个模型,带有一个 has_many :through 关联:

连接管理模型具有以下属性:

我想计算每个有多少calendars,每个有user多少。userscalendar

我打算使用 counter_cache 如下:

(当然,还有要添加:count_of_calendarsusers表和表:count_of_users中的相应迁移calendars。)

但是后来,我在 Rails Guides 中偶然发现了这个警告

4.1.2.4:依赖

如果将 :dependent 选项设置为:

  • :destroy,当对象被销毁时,会在其关联对象上调用destroy。
  • :delete,当对象被销毁时,其所有关联对象将直接从数据库中删除,而不调用它们的destroy方法。

您不应在与其他类上的 has_many 关联连接的 belongs_to 关联上指定此选项。这样做会导致数据库中出现孤立记录。

因此,计算每个人有多少以及calendars每个人有多少是一个好的做法?useruserscalendar

0 投票
1 回答
1334 浏览

cakephp - CakePHP 3:带有 BelongsToMany 的 CounterCache

我有一个BelongsToMany关联,我的表PostsTableTagsTablePostsTagsTable

正如CakePHP book (associations) 中解释的那样,我有以下字段:

现在一切正常。所以,正如你所理解的,现在我想将tags.post_count字段与CounterCache.

我遵循了CakePHP 的书,但我想这是一个特例,实际上它并不能通过简单地将行为添加到PostsTable.

你能帮助我吗?谢谢。

0 投票
1 回答
231 浏览

ruby-on-rails - 使用 counter_culture 更改同一查询中的多个计数器

我有以下课程,其中有几个针对同一关联的counter_culture计数器:

我遇到的问题是它使用几个查询执行更新:

有没有办法通过在单个查询中执行更新来更有效地使用counter_culture ?

0 投票
1 回答
62 浏览

ruby-on-rails - 依赖于 Paperclip 的条件计数器缓存

我有一个counter_culture计数器,它取决于是否定义了回形针附件:

问题是当帖子更新销毁时计数器不会更新。

我想这应该与Paperclip自己的回调系统有关。

0 投票
1 回答
1117 浏览

ruby-on-rails - Rails 和乐观锁定:通过关联创建对象更改 DB 中的锁定版本,而不是 ruby​​ 对象

我的项目有很多样板副本。

我有以下规格:

它失败:

我发现创建关联对象时,数据库中的 lock_version 字段已更新,但 ruby​​ 对象无法识别这一点。因此,当添加 时project.reload,规范通过:

这种行为是预期的吗?它与计数器缓存有关吗?

0 投票
1 回答
2141 浏览

ruby-on-rails - Rails 4计数器缓存不同步

我有一个带有计数器缓存(设置为belongs_to :my_model, counter_cache: true)的 Rails 4.2 应用程序,它设置了不正确的值。我可以直接调用控制台并调用MyModel.associated_model_count并获取20,然后调用MyModel.associated_model.count并获取19。保存模型并不能解决此问题。

这些值似乎并没有太大的偏差,但有些肯定是偏差的,我不知道为什么。

0 投票
2 回答
647 浏览

ruby-on-rails-4 - Rails 计数器缓存在同一模型上?

我有一个model Task,每个任务都有has_many其他任务:

我可以将计数器缓存添加到每个任务具有的 sub_tasks 的数量吗?如何?