假设有三种模型,例如,房子、墙和门(房子有墙,墙有许多门):
house应该为所有相关墙的所有门设置一个counter cache列,因为这是一个相当昂贵的查询。
为了更新此列,我在door模型中使用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
但是后一个版本在模型中使用时并没有更新计数器。不过,直接从控制台运行代码是成功的。
我错过了什么?
干杯!
最佳答案
也许这样试试:
房屋增值!(:门计数)
也许这需要在适当的地方完成。
关于ruby-on-rails - Rails中的计数器缓存:“increment_counter”有效,“increment”无效吗?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/4617703/