0

我有一个 has_many :through 关系,通过管理层将球员与球队联系起来。

我想在团队表上有一个计数器(有点像计数器缓存),它告诉我自本周开始以来有多少新关联。当然,计数器缓存不会起作用,因为它总是会给出所有曾经创建的关联。

我尝试从管理模型中更新相关团队。这永远不会成功。即使关联团队的增量似乎已保存好,但在创建关联后,我的计数器仍为 0。

我也尝试过使用观察者。观察员按我的预期被调用,我能够检索团队,但是对它的任何更新都没有保存。

我确定我遗漏了一些明显的东西!实现这一点的rails方法是什么?

我设置了一个 github 来说明问题,运行 rake spec 会失败。

http://github.com/steveybaby/assoc_problem

4

2 回答 2

0

我怀疑问题在于您命名了 counter field changes,这已经是一种 ActiveRecord 方法,用于检查自上次保存以来对记录属性的更改。尝试更改该字段的名称,看看您的代码是否有效。

于 2010-01-13T23:26:40.487 回答
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

基本上,您的观察者会更新相同的记录,但不会更新相同的对象。

于 2010-01-13T23:27:12.467 回答