gpt4 book ai didi

ruby-on-rails - ActiveRecord counter_cache 使用 multi_db gem 提供过时计数

转载 作者:行者123 更新时间:2023-12-01 05:46:30 26 4
gpt4 key购买 nike

我在 Rails 应用程序中的 PostgreSQL 上使用多数据库 gem 和 Slony-I 复制。这大部分工作得很好,但在某些情况下会有一点复制滞后。其中一种情况涉及 ActiveRecord counter_cache。

为清楚起见,假设以下两个模型:

class Post < ActiveRecord::Base
has_many :comments
...
end

class Comment < ActiveRecord::Base
belongs_to :post, :counter_cache => true, :touch => true
...
end

创建评论后,调用 rjs 来更新评论计数:
@comment.post.comments_count

关闭多数据库(或从数据库的条目指向主数据库),这工作正常。所以,我尝试了这样的事情:
ActiveRecord::Base.connection_proxy.with_master do
post=@comment.post
count=post.comments_count
end

这仍然给出了一个陈旧的结果。与设置一样:
config.cache_classes = false

看起来像是对 with_master 的调用不工作。关于如何确定使用哪个数据库多数据库的任何建议?或者,或者,关于如何处理这些问题?

最佳答案

不确定这是否是您所追求的解决方案,但我使用 masochism用于我的数据库复制和 counter_cache功能工作得很好。所以也许问题出在 gem 中,你需要提交一张票。

关于ruby-on-rails - ActiveRecord counter_cache 使用 multi_db gem 提供过时计数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1548930/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com