Railsに学ぶ例外の活用方法

Ruby On 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文でチェックしなくてよいということですね。
よく考えられてるなーと感心しました。
カテゴリ: