Ruby
RubyOnRails
初心者向け

pluckで取得したデータをハッシュに変換する方法

More than 1 year has passed since last update.

何回もやり方を忘れるので備忘録代わりに。
任意のカラムの値だけを利用する場合、pluckは検索も取得も早いのでよく使うのですが、
pluckで取れた値は、その後少し使いづらいので、出来ればハッシュ形式にしたいと言った時の書き方。

例えば、

@user = User.pluck(:id,:name)

で、取得した値は

pry: @user
=> [[1,abc], [2,cde], [3,efg], ...]

となっているので、少し使いづらい。出来れば idをキーにしたハッシュにしたい、と言った時。

userarray = User.pluck(:id,:name)
@userhash = Hash[*userarray.flatten]

とすると

pry: @userhash
=> {1=>abc,2=>cde,3=>efg,・・・}

となってくれて、これで、 ' @userhash[2] ' とかで名前を取り出す等が可能です。

<追記>
コメントで .to_hでarrayをハッシュに変換出来るとのご指摘頂きました。
こんな複雑な書き方せずとも、 userarray.to_h で望む結果が出てきました。