web-dev-qa-db-ja.com

Rails:find(id)がRailsで例外を発生させるのはなぜですか?

可能性のある複製:
ID 1が存在しない場合、Model.find(1)はActiveRecordエラーを返します

データベースにidが1のユーザーがいない場合、User.find(1)を試みると例外が発生します。

どうしてこれなの?

112
Kirschstein

それは、RDocに示されているように、アーキテクトがfind(id)の動作を意図した方法だからです。

IDで検索-これは、特定のID(1)、IDのリスト(1、5、6)、またはIDの配列([5、6、10])のいずれかです。リストされたすべてのIDのレコードが見つからない場合、RecordNotFoundが発生します。

例外を発生させたくない場合は、find_by_idを使用します。指定したIDのオブジェクトが見つからない場合はnilを返します。その場合の例はUser.find_by_id(1)です。

202
runako