すでにメンバーの場合は

無料会員登録

GitHubアカウントで登録 Pikawakaが許可なくTwitterやFacebookに投稿することはありません。

登録がまだの方はこちらから

Pikawakaにログイン

GitHubアカウントでログイン Pikawakaが許可なくTwitterやFacebookに投稿することはありません。

Ruby

【Ruby】 to_aメソッドの使い方を理解しよう

ぴっかちゃん
ぴっかちゃん

to_aメソッドとは、ハッシュ、範囲オブジェクトなどを配列に変換するメソッドです。

to_aメソッドの構文
1
オブジェクト.to_a

to_aメソッドの使い方

この章では、to_aメソッドの使い方について解説します。

ハッシュオブジェクトに使う場合

ハッシュオブジェクトに使う例を見てみましょう。

irb | to_aメソッドの実行 -->
1
2
3
human = {name: "pikawaka", age: e25}
human.to_a
=> [[:name, "pikawaka"], [:age, 25]]

このようにハッシュから配列に変換することができました。
この時注意するのは変換するキーとバリューが1つでも二次元配列になる点です。

※もっと詳しく知りたい方はこちらの記事を参照してください。

1つの時の例をみてみましょう。

irb | to_aメソッドの実行 -->
1
2
3
human = {name: "pikawaka"}
human.to_a
=> [[:name, "pikawaka"]]

このように変換するキーとバリューのセットが1つでも配列の中に配列として変換されます。

キーはシンボルで指定した時はシンボルとして、文字列で指定した時は文字列として変換されます。

irb | to_aメソッドの実行 -->
1
2
3
human = {name: "pikawaka", "age" => 25}
human.to_a
=> [[:name, "pikawaka"], ["age", 25]]

範囲オブジェクトに使う場合

範囲オブジェクトに使う例をみてみましょう。
範囲オブジェクトに使うと値が連続する配列に変換されます。

irb | to_aメソッドの実行 -->
1
2
3
4
(1..10).to_a
=> [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
("a".."z").to_a
=> ["a", "b", "c", "d", "e", "f", "g", "h", "i", "j", "k", "l", "m", "n", "o", "p", "q", "r", "s", "t", "u", "v", "w", "x", "y", "z"]

このように配列に変換することができます。

その他の便利な使い方

to_aメソッドはRuby on RailsのActiveRecordRelationクラスを配列に変換することもできます。
実際に使うときの例をみてみましょう。

whereメソッドの実行 -->
1
2
3
4
5
6
7
users = User.where(name: ‘pikawaka’)
=> [#<User:0x007faf2b445a70
  id: 1,
  name: "pikawaka">]

users.class
=> User::ActiveRecord_Relation

中身はほとんど配列の形と同じなのですが、配列にオブジェクトを追加するpushメソッドなどが使えなかったりします。

pushメソッドの実行結果 -->
1
2
users.push("ぴかわか")
NoMethodError: undefined method `push' for #<User::ActiveRecord_Relation:0x007faf2ac00f90>

このとき、to_aメソッドを使うと配列に変換されpushメソッドなどが使えるようになるので非常に便利です。

配列に変換 -->
1
2
3
4
5
6
7
8
9
10
11
12
users = User.where(name: ‘pikawaka’)
users.class
=> User::ActiveRecord_Relation
users.to_a.class
=> Array

users = users.to_a
users.push("ぴかわか")
=> [#<User:0x007faf2b445a70
  id: 1,
  name: "pikawaka">,
"ぴかわか"]

このようにActiveRecordRelationクラスからarrayクラスに変換されたことによって、配列クラスの pushメソッドが使える様になりました。

ぴっかちゃん

Rubyの用語やコードの読み方に不安があるという方は、こちらの書籍が参考になりますよ。

その他の変換系メソッド

Rubyには他にもオブジェクトの種類を変換するメソッドが用意されています。

メソッド 変換する内容 参照
to_s 文字列型に変換 参照記事
to_i 数値オブジェクトに変換 参照記事
to_f Floatクラス(浮動小数点数)に「変換 参照記事
to_sym シンボルに変換 参照記事
to_h ハッシュオブジェクトに変換 参照記事

この記事のまとめ

  • to_aメソッドはハッシュを配列に変換するメソッドのこと
  • 範囲オブジェクトも配列に変換することが出来る
  • 二次元配列として変換される