begin~rescue~endで処理する。
例外のメッセージにパターンがある場合はex.message
1 def destroy 2 @article = Article.find(params[:id]) 3 begin 4 if @article.destroy 5 flash[:notice] = '記事を削除しました。' 6 end 7 rescue => ex 8 #「violates foreign key」は外部キーの参照エラー。関連テーブルが存在するため削除できないことを意味する。 9 if ex.message=~/violates foreign key/ 10 flash[:notice] = '該当記事を参照しているデータがあるため削除できません' 11 else 12 #その他の例外 13 flash[:notice] = ex.message 14 end 15 end 16 redirect_to :action => 'index' 17 end
posted by
ysakaki
on Tue 12 Aug 2008
at 12:01