提问人:Nijeesh Joshy 提问时间:12/2/2020 最后编辑:Nijeesh Joshy 更新时间:12/2/2020 访问量:177
Pundit gem 错误类覆盖了我在 ruby 中的自定义错误类
Pundit gem error class overriding my custom error class in ruby
问:
我的应用程序定义了自定义错误类lib/error/*
例
#lib/error/custom_error.rb
module Error
class CustomError < StandardError
attr_accessor :error, :status, :message
def initialize error, status, message
@error = error || :unprocessable_entity
@status = status || 422
@message = message || 'Something went wrong'
end
# this is just an example
def raise_unauth_error
raise "un auth"
end
end
end
这已经用在了大量的控制器中,只是通过包含它,比如
class Api::UsersController < Api::ApiBaseController
include Error::CustomError
def set_user
.
.
.
raise Error::CustomError.new('sample message', 404, ""?) unless @user
end
def user_check
raise_unauth_error unless @user.admin?
end
end
我最近将 pundit gem 添加到我的应用程序中
class Api::ApiBaseController < ActionController::Api
include Pundit
end
现在我从任何地方收到错误说,。如果我像这样包含错误类,它就会消失,但是如果我必须这样做,那么我必须在很多地方进行此编辑Pundit::Error::CustomError (NameError)
::Error::CustomError
有没有办法在不覆盖自定义错误类的情况下包含 Pundit Gem?
答:
1赞
Cassandra S.
12/2/2020
#1
这是 Pundit 存储库中的一个已知问题,正如那里的讨论中所指出的,解决它的唯一方法(目前)是暂时使用。::Error::CustomError
评论