次のように time_zone を設定する before_filter の作成に関する Ryan Bates の指示に従います。
before_filter :set_timezone
def set_timezone
Time.zone = @current_user.time_zone
end
たとえば、同じアプリケーションを別のタイムゾーンで同時に使用している別のユーザーに、これが影響しないのはなぜですか?
次のように time_zone を設定する before_filter の作成に関する Ryan Bates の指示に従います。
before_filter :set_timezone
def set_timezone
Time.zone = @current_user.time_zone
end
たとえば、同じアプリケーションを別のタイムゾーンで同時に使用している別のユーザーに、これが影響しないのはなぜですか?
Time.zone
はグローバル設定ではありません。共有のデフォルト設定 (config.time_zone
制御するもの) がありますが、呼び出しTime.zone=
では設定されません。
代わりに、thead ローカル変数を設定します。同じスレッドからのその後の Time.zone の呼び出しではその値が読み取られますが、他のスレッドからの呼び出しでは読み取られません。
特定のスレッドは一度に 1 つのリクエストのみを処理するため、異なるタイム ゾーンのリクエストを異なるユーザーに提供することができます。
Rails アプリでも多くのスレッドを持つことができるため、各スレッドは独自のzone
. したがって、リンクをクリックしてから応答本文を取得するまで、同じスレッド (つまり、同じ ) のみを扱っていましたzone
。