如何在同一个 cookie 中存储多个值 - Rails
How to store more than one values, in same cookie - Rails
所以我想存储一对 comment_id:value
和一对 comment_user:value
到目前为止我这样做了
cookies.signed[:comment_author] = { value: @comment.id, expires: 2.hour.from_now }
基本上我想弄清楚如何将多个值存储到同一 cookie 以避免为同一用户创建多个 cookie。这可能吗?
问题 2:如果存在任何值,我如何动态附加到该 cookie?
使用一个 cookie 的唯一方法是将数据序列化为某种文本格式,如 YAML 或 JSON。
示例:
cookies.signed[:comment_data] = { value: {comment_id: 1, comment_user:2}.to_yaml, expires: 2.hour.from_now }
要读回它,只需通过以下方式处理 cookie 值:YAML.load
但是你应该记住,单个 cookie 的大小限制为 4K 字节(实际上甚至更少,因为签署 cookie 会增加 cookie 值的大小),所以你不能随心所欲地放那么多数据.因此,如果您只需要存储一些数字,您可以将它们存储在更紧凑的格式中,例如[1, 2].to_json
.
关于第二点:您不能真正向 cookie 附加任何内容,但您可以读取 cookie 中存储的任何内容并将其与您要附加的数据合并,然后再次设置 cookie。
你可以这样做:
if cookies[:comment_data]
existing_data_string = cookies[:comment_data]
existing_data = YAML.load(existing_data_string)
else
existing_data = {...}
end
existing_data.update(comment_number: 1234)
cookies.signed[:comment_data] = { value: existing_data.to_yaml, expires: 2.hour.from_now }
所以我想存储一对 comment_id:value
和一对 comment_user:value
到目前为止我这样做了
cookies.signed[:comment_author] = { value: @comment.id, expires: 2.hour.from_now }
基本上我想弄清楚如何将多个值存储到同一 cookie 以避免为同一用户创建多个 cookie。这可能吗?
问题 2:如果存在任何值,我如何动态附加到该 cookie?
使用一个 cookie 的唯一方法是将数据序列化为某种文本格式,如 YAML 或 JSON。
示例:
cookies.signed[:comment_data] = { value: {comment_id: 1, comment_user:2}.to_yaml, expires: 2.hour.from_now }
要读回它,只需通过以下方式处理 cookie 值:YAML.load
但是你应该记住,单个 cookie 的大小限制为 4K 字节(实际上甚至更少,因为签署 cookie 会增加 cookie 值的大小),所以你不能随心所欲地放那么多数据.因此,如果您只需要存储一些数字,您可以将它们存储在更紧凑的格式中,例如[1, 2].to_json
.
关于第二点:您不能真正向 cookie 附加任何内容,但您可以读取 cookie 中存储的任何内容并将其与您要附加的数据合并,然后再次设置 cookie。
你可以这样做:
if cookies[:comment_data]
existing_data_string = cookies[:comment_data]
existing_data = YAML.load(existing_data_string)
else
existing_data = {...}
end
existing_data.update(comment_number: 1234)
cookies.signed[:comment_data] = { value: existing_data.to_yaml, expires: 2.hour.from_now }