Rails,自定义异常

时间:2013-07-08 15:22:54

标签: ruby-on-rails error-handling

我正按照http://ariejan.net/2011/10/14/rails-3-customized-exception-handling/的说明操作并遇到路障。

我对铁杆比较陌生,所以我不确定我做得对不对,不对。

第一步是创建类

MyApp::ProfileNotFoundError < StandardError
end

所以我去app / models并创建了profile_not_found.rb,其中包含以下内容,其中(APP)是我的应用程序的名称,由Rails.application.class.parent_name定义,但我已隐藏此帖子以确保安全性/隐私。

(APP)::ProfileNotFoundError < StandardError
end

在app / controllers / application_controller.rb中我添加了

rescue_from (APP)::ProfileNotFoundError, :with => :profile_not_found

在我的登录控制器中添加了

raise (APP)::ProfileNotFoundError if @profile.nil?

然而,当我尝试测试代码时,我收到路由错误说明

uninitialized constant (APP)::BlankUsernameError

在我看来,这表明我做了一些关于类创建的错误,但教程是如此模糊,我无法弄明白。有什么指针吗?

我正在运行Rails 3.0.20&amp; Ubuntu 12.04.2上的Ruby 1.8.7 x86_64

1 个答案:

答案 0 :(得分:6)

您的班级定义中是否有class关键字?

class MyApp::ProfileNotFoundError < StandardError
end

其次,您必须require exceptions您正在使用它的uninitialized constant。这可能是您遇到module Exceptions class MyApp::ProfileNotFoundError < StandardError end end 错误时遇到的问题。要做到这一点,你可能需要将它包装在一个模块中:

/models

此外,您应该将错误类放在与/errors不同的目录中。此目录应明确适用于您的模型。也许像{{1}}那样做一个。