Rails モデルをカラムで検索する

Railsにてモデルをカラムで検索するには、whereメソッドかfind_by_columメソッドを使います。

whereの使い方

whereメソッドは、検索結果を全件返します。
リファレンス:検索条件を指定して取得(where)

モデル.where (検索条件)

Authorモデルのnameカラムが"tom"のレコードを取得する方法には、次の二通りがあります。どちらも結果は同じです。

# 文字列で指定
r = Author.where("name = 'tom'")
# ハッシュで指定
r = Author.where(name: "tom")

戻り値は、ActiveRecord_Relation配列で得られます。

r.class
=> Author::ActiveRecord_Relation

1件目のデータを参照するにはr[0]でアクセスします。

r[0].class
=> Author

find_by_columの使い方

find_by_columメソッドは、初めの1件だけ返してくれます。
リファレンス:カラム名を指定して最初の1件を取得(find_by_colum)

モデル.find_by_カラム名 (検索する値)

Authorモデルのnameカラムが"tom"のレコードを取得して変数rに格納するには次のようにします。

r = Author.find_by_name "tom"

戻り値は、Authorクラスです。

r.class
=> Author