0

私はhas_manyを持っています:管理を通じてプレーヤーをチームに関連付ける関係を通して。

チームテーブルにカウンター(カウンターキャッシュのようなもの)を配置して、週の初めから新しい関連付けがいくつあるかを教えてもらいたいです。もちろん、カウンターキャッシュは、これまでに作成されたすべての関連付けを常に提供するため、機能しません。

管理モデル内から関連するチームを更新してみました。これは決して成功しません。関連付けられたチームへの増分は正常に保存されているように見えますが、関連付けが作成された後も、カウンターは0のままです。

オブザーバーも使ってみました。オブザーバーが期待どおりに呼び出され、チームを取得できましたが、更新は保存されませんでした。

明らかな何かが欠けていると確信しています!これを実装するためのレールの方法は何ですか?

問題を説明するためにgithubをセットアップしましたが、rakespecの実行は失敗します。

http://github.com/steveybaby/assoc_problem

4

2 に答える 2

0

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 に答える