Rails Cookieを特定の日付で開始および/または期限切れに設定するにはどうすればよいですか?
回答:
Rails 5ドキュメントからの抜粋:
Cookieは、ActionController#cookiesを介して読み書きされます。
読み取られている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
-TimeまたはActiveSupport :: DurationオブジェクトとしてのこのCookieの有効期限。[...]
cookies[:login] = { value: "JX-122", expires: 3.months }
エラーが発生します。しかし、これはしません。cookies[:login] = { value: "JX-122", expires: 3.months.from_now }
詳細については、github.com
あなたの質問はこの質問に関連しているかもしれません: 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の変更が可能であり、問題なく機能していても、その時点ですでに凍結されているためです...」
それがお役に立てば幸いです。:)