結合テーブルのモデルから関連するレコードを更新します
-
20-09-2019 - |
質問
私はhas_manyの持っている:。関係を通じて経営を通じてチームに選手を関連付けることを
私は、週の初めからありましたどのように多くの新しい団体を私に伝えている(ビットカウンタキャッシュのような)チームのテーブルの上にカウンターを持っていると思います。それは常に、これまでに作成されたすべての関連付けを行いますので、もちろんカウンターキャッシュは文句を言わない動作します。
私は経営モデルの中から関連するチームを更新しようとしました。これが成功することはありません。関連するチームへの増分は関連が私のカウンタはまだ作成された後、[OK]を保存しているように見えるにもかかわらず0ます。
私はまた、オブザーバを使用してみました。私は予想通り観察者は、私がチームを取得することができました、呼ばれましたが、それへの更新は、再び、保存されませんでした。
私は何かを明らかに欠けていると確信しています!これを実装するためのレールの方法は何ですか?
問題を説明するためのIセットアップgithubの、すくいスペックを実行すると失敗します。
解決
あなたのスペックでます:
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
基本的にはあなたの観察者が同じレコードではなく、同じオブジェクトを更新します。
他のヒント
私はこの問題はすでに最後の保存以降のレコードの属性への変更を検査するためのActiveRecordの方法であるカウンタフィールドchanges
を、名前のことであると思います。そのフィールドの名前を変更してみて、あなたのコードが動作するかどうかを確認します。
所属していません StackOverflow