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集始终处于活动状态。