2011-01-06 31 views
2

给定三种模型,例如房屋,墙壁和门(房屋可能墙壁和墙有很多门): 房屋应该有一个柜台缓存列,用于所有关联墙的所有门,因为这是一个相当昂贵的查询使。Rails中的计数器缓存:'increment_counter'起作用,'increment'不起作用?

为了更新这个专栏中,我使用了门模式,这触发下列方法中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 

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

我在这里失踪了什么?

干杯!

回答

2

也许尝试这样的:

house.increment!(:doors_count)

也许它需要的地方进行。

+0

这确实是个诀窍。非常感谢! – polarblau 2011-01-06 18:21:15