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
但是当在模型中使用后者版本时没有更新计数器。不过,直接从控制台运行代码很成功。
我在这里失踪了什么?
干杯!
这确实是个诀窍。非常感谢! – polarblau 2011-01-06 18:21:15