1

ActiveResource::Base のユーザー、パスワード、およびサイト変数について考えたとき、それらは 1 つの要求で変更でき、次の要求でも変更されたままになることに気付きました。クラス変数/属性のすべての使用に適用されるため、これは望ましくない動作のように思われ、おそらく広範囲にわたる問題です。

Rails は、各リクエストが元の状態で開始されるように、クラスレベルの状態への変更をクリーンアップするメカニズム (デフォルトへのリセットなど) を提供しますか?

そうでない場合、各リクエストの開始時に再適用されるクラス変数を初期化する方法を追加することは可能でしょうか? これをスレッドセーフなストレージと組み合わせると、クラス変数の問題が大幅に軽減されます。class_attributeの変更の可能性は?

アップデート:

上記のリンクされた質問で説明したように、これに注意を向けた特定のケースは、ユーザーごとに ActiveResource::Base.user とパスワードを設定していたという事実でした。それらをリセットできなかった場合、あるユーザーに代わって REST リクエストが、その後のページ読み込みで別のユーザーの資格情報を使用して行われることになります。

4

1 に答える 1

0

好奇心から、なぜこれをやりたいのか、具体的な例を挙げていただけますか? 一見すると、変数の変更を要求しているように見えるので、Rails は要求どおりに動作します。

答えに関しては、いくつかのオプションがあります:

  • 変数に対して自動的に「デフォルトに戻す」動作はありません。
  • これを発生させたい各コントローラーアクションの最後に手動で値をリセットできます
  • これを行うモジュールを作成し (「acts_as_resettable」と呼びますか?)、この機能が必要なクラスにそのモジュールを含めることができます。
于 2011-11-11T22:20:53.497 に答える