我有一个has_many:通过关系将玩家与团队联系起来。
我想在团队表上有一个计数器(有点像计数器缓存),它告诉我自本周开始以来有多少新关联。当然,计数器缓存不会起作用,因为它总是会给出所有已创建的关联。
我尝试过在管理模型中更新相关团队。这永远不会成功。即使相关团队的增量似乎已保存,但在创建关联后,我的计数器仍为0。
我也尝试过使用观察者。观察者按照我的预期被召唤,我能够找回团队,但是再次对其进行的任何更新都没有保存。
我确定我错过了一些明显的东西!实现这个的轨道方式是什么?
我设置了一个github来说明问题,运行rake规范会失败。
答案 0 :(得分:0)
我怀疑问题在于你命名了计数器字段changes
,它已经是一个ActiveRecord方法,用于检查自上次保存以来对记录属性的更改。尝试更改该字段的名称,看看您的代码是否有效。
答案 1 :(得分:0)
在您的规范中:
fanteam_spec.rb
it "should be able to create a fanteam" do
@fanteam.save
@fanteam.changes.should be(0)
@fanteam.should be_valid
@fanteam.players << Factory.build(:player)
@fanteam.reload # this is what you are forgetting
@fanteam.changes.should be(1)
end
基本上你的观察者更新相同的记录,但不是同一个对象。