Set start date and expiration date for Rails cookies

Ruby on-RailsCookies

Ruby on-Rails Problem Overview


How do I set a Rails cookie to start and/or expire at a certain date?

Ruby on-Rails Solutions


Solution 1 - Ruby on-Rails

Excerpts from Rails 5 documentation:

> Cookies are read and written through ActionController#cookies.

> The cookies being read are the ones received along with the request, the cookies being written will be sent out with the response. Reading a cookie does not get the cookie object itself back, just the value it holds.

> Examples of writing:

> # 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"

> [...]

> The option symbols for setting cookies are:

> - :expires - The time at which this cookie expires, as a Time or ActiveSupport::Duration object.

> [...]

Solution 2 - Ruby on-Rails

your question might be related to this question: How to I dynamically set the expiry time for a cookie-based session in Rails

one of the comments points to Deprecating SlideSessions:

> "..If you need to set expiration period > for sessions through all controllers > in your application, simply add the > following option to your > config/intializers/session_store.rb > file: > > :expire_after => 60.minutes > > If you need to set different > expiration time in different > controllers or actions, use the > following code in action or some > before_filter: > > request.session_options = request.session_options.dup > request.session_options[:expire_after]= 5.minutes > request.session_options.freeze > > Duplication of the hash is needed only > because it is already frozen at that > point, even though modification of at > least :expire_after is possible and > works flawlessly..."

I hope that helps. :)

Solution 3 - Ruby on-Rails

It's worth noting that as of right now it is impossible to set a start time for a cookie. A cookie set is always active immediately.

Attributions

All content for this solution is sourced from the original question on Stackoverflow.

The content on this page is licensed under the Attribution-ShareAlike 4.0 International (CC BY-SA 4.0) license.

Content TypeOriginal AuthorOriginal Content on Stackoverflow
QuestionnirmalView Question on Stackoverflow
Solution 1 - Ruby on-RailsSenthil Kumar BhaskaranView Answer on Stackoverflow
Solution 2 - Ruby on-RailspagemanView Answer on Stackoverflow
Solution 3 - Ruby on-RailseltiareView Answer on Stackoverflow