これに作業日を費やしました。コントローラからActiveRecordアソシエーションをリロードできません
私は
class Box
has_many :users, :through => :subscriptions
end
は、私もすぐに自分の仕事をするために、複数のINSERTを使用するカスタムinsert_new_users
とassociate_with(new_users)
メソッドを持っています。とにかく、彼らはうまく動作します。私はまた、「associate_with」メソッドの最後に次の行を持っている:
def associate_with
# mysql INSERT here
self.users(true) # Should force reload
end
また、テスト環境(の両方のコントローラとモデルテスト)で実行するときに期待どおりに動作し、それは私がtrue
引数を、削除した場合、予想通り失敗します強制的にリロードします。またscript/console
の開発中ですのでupdate_attributes
のモデルです。しかし、コントローラからupdate_attributes
にしようとすると、開発や生産に失敗します。これは関連付けをリロードしないだけで、ログにはこのクエリの「CACHE(0.0ms)」と表示されます。
奇妙なこと - 以前はうまくいっていたし、何らかの理由で動作が停止した瞬間を特定できません。私はおそらく誰かがこれが可能であることを知っていることを望んでいた。
モデルの中から呼び出すとき、残念なことに、未定義のメソッド「uncached」と言います。 – snitko
良いキャッチ。これはクラスメソッドであり、インスタンスではありません。私は答えの範囲を修正しました。 –
これはRailsのバグですか?リロードを呼び出すと、実際にリロードされるはずです。 SQLクエリキャッシュは、データベースが実際には変更されていないことを知るほどスマートですが、この場合、これは本当に心配するものではありません。 –