Railsに学ぶ例外の活用方法
scaffoldでMVCを自動生成した場合、存在しないIDでshowアクションを呼び出すと、HTTP404レスポンスが返ってくる。
http://localhost/items/99999
これの仕組みはどうなっているかというと、まずコントローラのshowアクションがこのようになっており、
def show
@item = Item.find(params[:id])
respond_to do |format|
format.html # show.html.erb
format.json { render json: @item }
end
end
Item.findで結果がない場合にActiveRecord::RecordNotFoundが発生↓
ActionController::Rescueが補足
↓
HTTP404を出力
なおかつ、開発環境と本番環境で404の画面が異なるらしい。
開発環境では例外情報の詳細が表示され、本番環境ではPage Not Foundのような画面が表示される、とのこと(←未確認)。
何が面白いのかとというと、findの結果があるかないかをif文でチェックしなくてよいということですね。
よく考えられてるなーと感心しました。
カテゴリ:
Rails