我正按照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
答案 0 :(得分:6)
您的班级定义中是否有class
关键字?
class MyApp::ProfileNotFoundError < StandardError
end
其次,您必须require
exceptions
您正在使用它的uninitialized constant
。这可能是您遇到module Exceptions
class MyApp::ProfileNotFoundError < StandardError
end
end
错误时遇到的问题。要做到这一点,你可能需要将它包装在一个模块中:
/models
此外,您应该将错误类放在与/errors
不同的目录中。此目录应明确适用于您的模型。也许像{{1}}那样做一个。