はじめに、、、
そもそもエラーハンドリングとは、、、
エラーハンドリングとは、プログラムの処理中に処理が妨げられる事象が発生した際、その処理をエラーとして対処する処理のことである。例外処理とも呼ばれる。
とのことです。
今回はこれについて話していきます。
railsでエラーハンドリングを行う
railsでエラーハンドリングを行わなければならなくもっとも使用頻度で高いものでいうとmodelのcreateアクションだと思います。
def create
@article = Article.create(article_params)
redirect_to articles_path
end
上のような書き方をしていると、もし仮にarticleがバリデーションの設定等の原因で新しいレコードをcreate出来なかった場合、エラーがでてそこで処理が止まってしまいます。
ローカル開発なら問題ないですが、実務環境で処理が止まってしまうと数分で何百万もの損失を出してしまう可能性があります。
そこで、エラーハンドリングを行います。
そしてエラーハンドリングをやった時のcreateアクションが↓です。
def create
#@articleと言う変数に値を入れる
@article = Article.new(article_params)
if @article.save #保存できるか?
#保存に成功した時はarticleのindexアクションにリダイレクト
redirect_to articles_path
else
#保存に失敗したときはarticleのnewアクションにリダイレクト
render :new
end
end
このように、値をseveする時にseveできているかの条件式(if文)を挟む事で、
値が作成されずエラーが出て処理が停止してしまう事は無くなります。
最後に
railsではscaffoldなどのrails g コマンドを使ってビューファイルを生成した時は、自動でエラーハンドリングは行われていますが、
自分でsave処理を行う時などは、気をつけてコーディングしましょう!