这是一个古老的问题,但是我想分享一下我如何在Rails中处理自定义错误,包括附加错误消息,测试以及如何使用 ActiveRecord
模型。
创建自定义错误
class MyClass
# create a custome error
class MissingRequirement < StandardError; end
def my_instance_method
raise MyClass::MissingRequirement, "My error msg" unless true
end
end
测试(最小)
test "should raise MissingRequirement if ____ is missing"
# should raise an error
error = assert_raises(MyClass::MissingRequirement) {
MyClass.new.my_instance_method
}
assert error.message = "My error msg"
end
使用ActiveRecord
我认为值得注意的是,如果使用ActiveRecord
模型,一种流行的模式是如下所述向模型添加错误,以使验证失败:
def MyModel < ActiveRecord::Base
validate :code_does_not_contain_hyphens
def code_does_not_contain_hyphens
errors.add(:code, "cannot contain hyphens") if code.include?("-")
end
end
运行验证时,此方法将搭载在ActiveRecord的 ActiveRecord::RecordInvalid
错误类上,并导致验证失败。
希望这可以帮助!
httparty
:github.com/jnunemaker/httparty/blob/…–