tyoshikawa1106のブログ

- Force.com Developer Blog -

Rails:オブジェクトの検索について

Railsチュートリアルの第6章、オブジェクトの検索と更新について勉強しました。


Active Recordには、オブジェクトを検索するための方法がいくつもあります。これらの機能を使用して、過去に作成した最初のユーザーを探してみましょう。また、3番目のユーザー (foo) が削除されていることを確認しましょう。まずは存在するユーザーから探してみましょう。

User.find(1)

f:id:tyoshikawa1106:20150803115319p:plain

ここでは、User.findにユーザーのidを渡しています。その結果、Active Recordはそのidのユーザーを返します。


存在しないIDを指定すると次のようにエラーメッセージが表示されます。
f:id:tyoshikawa1106:20150803115536p:plain


一般的なfindメソッド以外に、Active Recordには特定の属性でユーザーを検索する方法もあります。

User.find_by_email("mhartl@example.com")

find_by_emailは、usersテーブルのemail属性に基づいてActive Recordが自動的に生成するメソッドです。Rails 4.0以降では、属性を検索する場合には上のメソッドに代えてより普遍性の高いfind_byメソッドを使用することが推奨されています。このメソッドでは属性をハッシュ形式で渡します。

User.find_by(email: "mhartl@example.com")

f:id:tyoshikawa1106:20150803120034p:plain


find関連メソッドは、ユーザーをサイトにログインさせる方法を学ぶときに役に立ちます。オブジェクトの検索には他にもfirstメソッドやallメソッドも用意されています。


firstは単にデータベースの最初のユーザーを返します。

User.first


allはデータベースのすべてのユーザーの配列を返します。

User.all

f:id:tyoshikawa1106:20150803120622p:plain