LoginSignup
11
3

More than 5 years have passed since last update.

【Rails】Hashのkeyスネークケースから大文字とかキャメルケースにしたいとき

Posted at

サーバー側をRuby on Railsで書いて、フロント側をJavaScriptで書いてると命名規則の問題でスネークケースを大文字にしたり、キャメルケースへ変換した時があった。

例えば、以下のハッシュがあったとします。

qiita.rb
[10] pry(main)> hoge = {'user_id' => 1, 'user_name'=> '太郎'}
=> {"user_id"=>1, "user_name"=>"太郎"}

うわー。このハッシュのキーをキャメルケースにしてーwww
大文字にしてーwww
ってことありますよね。

APIを使ってフロント側にこのハッシュ値を送りたいが、フロント側ではキャメルケース使っていた場合とか。

んで、肝心なやり方ですが、transform_keysってのがrailsには用意されていて、便利でした。

使うとこんな感じ。

大文字パターン

qiita.rb
[13] pry(main)> hoge.transform_keys { |k| k.upcase }
=> {"USER_ID"=>1, "USER_NAME"=>"太郎"}

キャメルケースパターン

qiita.rb
[12] pry(main)> hoge.transform_keys{|k| k.camelize}
=> {"UserId"=>1, "UserName"=>"太郎"}
qiita.rb
[14] pry(main)> hoge.transform_keys{|k| k.camelize(:lower)}
=> {"userId"=>1, "userName"=>"太郎"}

文字列に対してcamelizeを実行するだけでキャメルケースにしてくれのも便利。

11
3
3

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
11
3