1

我按照http://ariejan.net/2011/10/14/rails-3-customized-exception-handling/上的说明进行操作,遇到了障碍。

我对 Rails 比较陌生,所以我不确定我做对了什么/不太对。

第一步是创建类

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

在我看来,这表明我在创建类方面做错了,但是教程太模糊了,我无法弄清楚。任何指针?

我在 Ubuntu 12.04.2 x86_64 上运行 Rails 3.0.20 和 Ruby 1.8.7

4

1 回答 1

6

class的类定义中有关键字吗?

class MyApp::ProfileNotFoundError < StandardError
end

其次,你必须知道requireexceptions在哪里使用它。这可能是您遇到的uninitialized constant错误问题。为此,您可能必须将其包装在一个模块中:

module Exceptions
  class MyApp::ProfileNotFoundError < StandardError
  end
end

此外,您应该将错误类放在与/models. 该目录应该明确用于您的模型。也许让一个喜欢/errors

于 2013-07-08T15:45:24.397 回答