web-dev-qa-db-ja.com

Rails cookiesの開始日と有効期限を設定します

Rails Cookieを設定して特定の日付に開始および/または期限切れにする方法は?

83
nirmal

Rails 5ドキュメント からの抜粋:

Cookieは、ActionController#cookieを介して読み書きされます。

読み込まれているCookieはリクエストとともに受信されたもので、書き込まれているCookieは応答とともに送信されます。 Cookieを読み取っても、Cookieオブジェクト自体は取得されず、保持されている値のみが取得されます。

書く例:

# Sets a simple session cookie.
# This cookie will be deleted when the user's browser is closed.
cookies[:user_name] = "david"

# Sets a cookie that expires in 1 hour.
cookies[:login] = { value: "XJ-122", expires: 1.hour }

# Sets a cookie that expires at a specific time.
cookies[:login] = { value: "XJ-122", expires: Time.utc(2020, 10, 15, 5) }

# Sets a "permanent" cookie (which expires in 20 years from now).
cookies.permanent[:login] = "XJ-122"

[...]

Cookieを設定するためのオプション記号は次のとおりです。

  • :expires-このCookieが期限切れになる時刻。TimeまたはActiveSupport :: Durationオブジェクトとして。

[...]

あなたの質問はこの質問に関連している可能性があります。 RailsでのCookieベースのセッションの有効期限を動的に設定する方法

コメントの1つが SlideSessionsの廃止 を指している:

"..アプリケーション内のすべてのコントローラーを介したセッションの有効期限を設定する必要がある場合は、config/intializers/session_store.rbファイルに次のオプションを追加するだけです。

:expire_after => 60.minutes

異なるコントローラーまたはアクションで異なる有効期限を設定する必要がある場合は、次のコードのアクションまたは一部のbefore_filterを使用します。

request.session_options = request.session_options.dup
request.session_options[:expire_after]= 5.minutes
request.session_options.freeze

ハッシュの複製は、少なくとも:expire_afterの変更が可能であり、問​​題なく動作している場合でも、その時点で既に凍結されているためにのみ必要です...」

それがお役に立てば幸いです。 :)

18
pageman

現時点では、Cookieの開始時間を設定することは不可能であることに注意してください。 Cookieセットは常にすぐにアクティブになります。

3
eltiare