1

次のように time_zone を設定する before_filter の作成に関する Ryan Bates の指示に従います。

before_filter :set_timezone

def set_timezone
    Time.zone = @current_user.time_zone
end

たとえば、同じアプリケーションを別のタイムゾーンで同時に使用している別のユーザーに、これが影響しないのはなぜですか?

4

2 に答える 2

3

Time.zoneはグローバル設定ではありません。共有のデフォルト設定 (config.time_zone制御するもの) がありますが、呼び出しTime.zone=では設定されません。

代わりに、thead ローカル変数を設定します。同じスレッドからのその後の Time.zone の呼び出しではその値が読み取られますが、他のスレッドからの呼び出しでは読み取られません。

特定のスレッドは一度に 1 つのリクエストのみを処理するため、異なるタイム ゾーンのリクエストを異なるユーザーに提供することができます。

于 2012-06-15T12:56:05.163 に答える
1

Rails アプリでも多くのスレッドを持つことができるため、各スレッドは独自のzone. したがって、リンクをクリックしてから応答本文を取得するまで、同じスレッド (つまり、同じ ) のみを扱っていましたzone

于 2012-06-15T10:15:58.323 に答える