1. ホーム
  2. ruby-on-rails

[解決済み] ActiveRecord::RecordNotFoundを取得するRails検索

2022-03-03 10:05:24

質問

モデル内に "belongs to" を含むテーブルがあります。 このテーブルは、2つのテーブルをリンクするためにxx_idフィールドを含んでいます。

しかし、xx_idが空白になることがあります。 その場合、ActiveRecord::RecordNotFoundが表示されます。 エラーではなく、このフィールドを空白で表示させたいのです。

何かいい方法はないでしょうか?

解決方法は?

Railsは常に ActiveRecord::RecordNotFound を使用すると、例外が発生します。 find メソッドを使用します。は find_by_* を返します。 nil レコードが見つからなかったとき

ActiveRecordのドキュメント が教えてくれる。

RecordNotFound - Findメソッドに応答したレコードがありません。検索メソッドに応答したレコードはありません。 指定された ID の行が存在しないか、または指定された ID の行が 追加された制限事項です。find 呼び出しの中にはこの例外を送出しないものもあります。 は何も見つからなかったことを意味するので、そのドキュメントを確認してください。 を使用します。

を返したい場合 nil レコードが見つからない場合の例外処理は、次のようにすればよい。

begin
  my_record = Record.find params[:id]
rescue ActiveRecord::RecordNotFound => e
  my_record = nil
end