Rails cookies,设置开始date和过期date

导轨cookies,

我需要使用cookie设置开始date和过期date,

例如,一旦添加的项目达到第三天,该项目应该过期。

Cookies是通过ActionDispatch#cookies (Rails 3及以下的ActionController#cookies)读取和写入的。 这个答案中的文字是从上面的API文档链接引用的。

正在读取的cookie是与请求一起收到的cookies,正在写入的cookie将随响应发送出去。 读取cookie不会获取cookie对象本身,只是它保存的值。

编写示例:

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

阅读示例:

  cookies[:user_name] # => "david" cookies.size # => 2 

删除示例:

  cookies.delete :user_name 

请注意,如果您在设置Cookie时指定了一个域名,则在删除Cookie时还必须指定域名:

  cookies[:key] = { :value => 'a yummy cookie', :expires => 1.year.from_now, :domain => 'domain.com' } cookies.delete(:key, :domain => 'domain.com') 

设置Cookie的选项符号是:

 * :value - The cookie's value or list of values (as an array). * :path - The path for which this cookie applies. Defaults to the root of the application. * :domain - The domain for which this cookie applies. * :expires - The time at which this cookie expires, as a Time object. * :secure - Whether this cookie is a only transmitted to HTTPS servers. Default is false. * :httponly - Whether this cookie is accessible via scripting or only HTTP. Defaults to false. 

你的问题可能与这个问题有关: 如何在Rails中dynamic设置基于cookie的会话的到期时间

其中一条评论指向“ 弃用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 

散列的重复只是因为它已经被冻结在这一点上,即使修改至less:expire_after是可能的,并且工作完美…“

我希望有帮助。 🙂

值得注意的是,目前还不可能为cookie设置启动时间。 Cookie集始终处于活动状态。