LoginSignup
10
8

More than 5 years have passed since last update.

[備忘録]railsでcookiesで配列を保存したいときは気をつける。

Last updated at Posted at 2017-09-06

cookiesのリファレンスにある具体例には以下のようにあります。

cookiesのリファレンスにある具体例

実装してみると・・・

例にならってcookiesに配列を代入します。

cookies[:hoge] = [1,2]

これを参照しようとすると、
要素にjoin("&")したような形で文字列になって返ってきます。
配列として扱えない。

cookies[:hoge] #=> "1&2"

そのため、このまま使うならsplit("&")のような処理をしてarrayで処理するか、
そもそもarrayで保存せずにstringで保存してjoin(",")など任意の文字で配列に変換できる文字列を保存するかになるのですが、
これだと、join(",")からjoin("-")などに変更すると、
すでにユーザーのクッキーに前の状態のデータ(join(",")などで生成した文字列)が保存されていると、
そのための処理が必要になります。
なので、ここはJSON.parseしてしまいましょう。

JSON.parseでの実装

配列の代入

my_array = [1,2]
cookies[:hoge] = JSON.generate(my_array)

参照

JSON.parse(cookies[:hoge])

stackoverflowなどを見ると、配列にjoin(",")して文字列で保存して変換して使う方法も書いてありますが、
私はこちら推しです:hugging:

10
8
1

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
10
8