创建一个Post模型,其中包含lock_Version和Comments_Count列,以及带有:Comments的Has_Many关系. 使用COUNTER_CACHE=TRUE,创建一个带有lock_version列的注释模型,并与:POST建立一个beles_to关系.

class Post < ActiveRecord::Base
  has_many :comments
end

class Comment < ActiveRecord::Base
  belongs_to :post, counter_cache: true
end

post = Post.create!
comment = Comment.create(post)
puts post.reload.comments_count # 1 (correct)
Comment.last.destroy
puts post.reload.comments_count # 1 (should be 0 - incorrect)

我试图更改Rails和Ruby版本,但都失败了.

推荐答案

如果您判断ActiveRecord::Locking::Optimistic(link)的源,那么最后一个提交a7dc348的标题是"使用乐观锁定修复递减父记录的计数器缓存",并且它是在12小时前创建的.但是,提交消息中没有问题引用,因此没有提示错误是何时引入的.

我能够在我的一个项目中用activerecord-7.0.4个重现这个问题.然后我用main的当前版本替换了optimistic.rb,它开始工作了.

Ruby-on-rails相关问答推荐

如何测试自定义路由?

Rails Routing:在具有自己的路由的名称空间下组织路由

查询Where Date.parse Rails

我需要在我的 Rails 7 应用程序中保留 app/assets/config/manifest.js 吗?

Rails 3.1 assets资源 - 奇怪的开发服务

Rails:用于创建固定长度 char(12) 列的迁移

Ruby 地理定位Ruby /插件

使用 RSpec 和 Capybara (Rails) 测试重定向

Rails 3:如何正确显示textarea中的文本?

如何在 Rails 迁移中添加判断约束?

指定要从 before_filter 中排除的控制器

未定义的方法 attr_accessible

未选中时,如何使 check_box_tag 发布false或0参数?

格式化日期对象以显示人类可读的日期

如何在 Ruby 中生成随机日期?

嵌套模型和父验证

Ruby 根据属性在数组中查找并返回对象

Ruby on Rails:如何从显示的子资源中获取错误消息?

如何在 rake 任务中强制 RAILS_ENV?

在 Rails 3 中突出显示当前页面的最佳方法? -- 有条件地将css类应用于链接