我在 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
不起作用。关于如何确定使用哪个数据库多数据库的任何建议?或者,或者,关于如何处理这些问题?