• 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31

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 Face ysakaki on Tue 12 Aug 2008 at 12:01

Comments:

or Preview
Social Bookmarks
  • Delicious
  • B_entry778
  • Clip_16_12_w
Services from s21g
twpro(ツイプロ)
Twitterプロフィールを快適検索
地価2009
土地の値段を調べてみよう
MyRestaurant
自分だけのレストラン手帳
Formula
ブログに数式を埋め込める数式コミュニティ