ruby-on-rails - Rails 中的计数器缓存 : 'increment_counter' works, 'increment' 不是吗?

标签 ruby-on-rails ruby counter increment

给定三个模型,例如房子、墙和门(房子有许多墙,墙有很多门): House 应该有一个计数器缓存列,用于所有关联墙的所有门,因为这是一个相当昂贵的查询。

为了更新此专栏,我在门模型中使用了 after_create 和 after_destroy 回调,它们成功触发了以下方法:

def increase_house_doors_count
  House.increment_counter(:doors_count, house.id)
end

def decrease_house_doors_count
  House.decrement_counter(:doors_count, house.id)
end

“房子”是一个方法:

def house
  wall.house
end

最初我使用了一个略有不同但 (IMO) 更简单的版本:

def increase_house_doors_count
  house.increment(:doors_count)
end

def decrease_house_doors_count
  house.decrement(:doors_count)
end

但是后一个版本在模型中使用时没有更新计数器。不过,直接从控制台运行代码是成功的。

我在这里错过了什么?

干杯!

最佳答案

也许可以这样尝试:

house.increment!(:doors_count)

也许需要就地完成。

关于ruby-on-rails - Rails 中的计数器缓存 : 'increment_counter' works, 'increment' 不是吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4617703/

相关文章:

ruby-on-rails - 销售点和库存数据库架构

ruby-on-rails - 如何将当前的 Basecamp API 与 ActiveResource 结合使用?

ruby-on-rails - 在控制台中使用两个应用程序

ruby-on-rails - 如何初始化 Rack 服务器监听套接字

ruby-on-rails - Rails 3 : Duplicate validation error messages during testing

ruby-on-rails - 如何将一维ruby数组组合成二维数组?

ruby-on-rails - 如何访问以前的updated_at?

javascript - 向文本序列添加计数器

基于列条件的 Pyspark 计数器

mysql - 自由RADIU : passing Max-All-Session in SQL