存在しないデータのページにアクセスした場合は 404 NotFound に飛ばしたい
find_by_* メソッドには例外を投げるメソッドがある
こういう action があったとする
# config/routes.rb resources :users
# app/controllers/users_controller.rb class UsersController < ApplicationController def show @user = User.find_by_name(params[:name]) end end
この部分!
@user = User.find_by_name(params[:name]) # => nil
@user = User.find_by_name!(params[:name]) # ActiveRecord::RecordNotFound: ActiveRecord::RecordNotFound
Rails は action で ActiveRecord::RecordNotFound が発生すると 404 と紐付けてくれるので、下のケースでは 404 ページに飛ばすことができる。
リソース必須なページはこれを使うと良い!