LoginSignup
13
6

More than 5 years have passed since last update.

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

Last updated at Posted at 2017-07-31

何回もやり方を忘れるので備忘録代わりに。
任意のカラムの値だけを利用する場合、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 で望む結果が出てきました。

13
6
2

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
13
6