🔰

🔰RailsのActiveRecordの戻り値で引っかかった話

2024/02/29に公開

ActiveRecordを使いデータ取得をしようとした際の戻り値の扱い方で若干詰まったので備忘録。

ActeviRecordを使ったクエリメソッドの戻り値

例えば以下のようにWhereを使ってレコードを取得した場合の戻り値は、配列ではなActiveRecord::Relationのインスタンスとなる。

games = Game.where(played: true)

※検索対象が無い場合は、空のインスタンスが返される。

てっきり配列が返ってくるのかと思っていたがインスタンスが返ってくるので注意。

そもそもActiveRecord::Relationって?

要は簡単にSQLが書けるライブラリらしい。
select・where・limit...等のクエリメソッドをつなぎ合わせて使用できる。

特定のカラムの値を抜き出すにはどうする?

ActiveRecord::Relationインスタンスから特定のカラムの値を抜き出すには、pluckを使用する。

title_list = games.pluck(:title)

※pluckを使用した場合、戻り値は配列となるので注意。

ちなみに、先ほどのwhere句とチェインして使用することも可能

title_list = Game.where(played: true).pluck(:title)

まとめ

ActiveRecordを使っていって少しずつ慣れてきた気がする。
ただまだまだ触れている範囲が狭すぎて、上手に使いこなせていなので勉強していかないと...。

Discussion