【Rails】オブジェクトをハッシュで取得する【個人的備忘録】

モデルで取得したデータをハッシュで受け取りたい場合の処理についてです。
確認環境はrails 4.0.0

実際のコード

(例) AreaモデルのデータをHash[code] = name の構造で取得したい

【Areaテーブル】

id | code | name
1 | HK | 北海道
2 | AO | 青森
3 | IW | 岩手

【コード】

get_area = Hash[Area.all.map { |item| [item.code, item.name] }]

【期待結果】

get_area
{“HK” => “北海道”, “AO” => “青森”, “IW” => “岩手” }

簡単な解説

下記のような配列をHashで括るとハッシュ型に変換されます。
[[“1”, “a”], [“2”, “b”], [“3”, “c”]]

Hash[[[“1”, “a”], [“2”, “b”], [“3”, “c”]]]

{“1” => “a”, “2” => “b”, “3” => “c”}

Hashで括るために取得したオブジェクト(Area.all)をmapを使って適切な配列型に変換します。

Area.all.map { |item| [item.code, item.name] }

[[“HK”, “北海道”], [“AO”, “青森”], [“IW”, “岩手”]]

※参考記事
『railsでActiveRecordの結果をHashに変換する方法』
http://qiita.com/t4kmru/items/2a2b58bb801929b5e67c



コメントをどうぞ

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です