我正在使用Model.increment_counter(:c, 11)
以便在增加列时避免竞争条件(请参阅相关内容:How do I consistently increase a counter cache column?)
但是我注意到以下代码:
@order = Order.find(11)
p @order.c # This prints 4
Order.increment_counter(:c, 11)
p @order.c # This still prints 4
@order.reload
p @order.c # This prints 5
为什么在进行更新后需要重新加载对象?为什么AR没有直接显示变化?
答案 0 :(得分:2)
这里的问题如下:
不可能,类方法对你的内存对象一无所知。
为什么不直接在模型属性上设置值?如果有的话?