RailsのActiverecordでkeyがid ValueがmodelオブジェクトのHashを作りたい
簡易的にN+1問題に対応しようとした時に、 Keyがid, ValueがそのモデルのオブジェクトのHashが欲しい時がありました。
そんな時は、index_byが良いっぽいです。
たとえば、Itemモデルで下記のようなテーブルがあって
id | name | code |
---|---|---|
1 | あああ | aaaa |
2 | いいい | bbbb |
3 | ううう | cccc |
以下のようなハッシュが作りたい時
{1=>#<Item id: 1, name: 'あああ', code: 'aaaa'>, 2=>#<Item id: 1, name: 'あああ', code: 'aaaa'>, ・・・・}
下記のように index_byを使うと取得できます。
Item.all.index_by(&:id)
以上
関連記事
- 作者: 高橋征義,諸橋恭介
- 出版社/メーカー: ソフトバンククリエイティブ
- 発売日: 2008/05/31
- メディア: 単行本
- 購入: 37人 クリック: 567回
- この商品を含むブログ (92件) を見る