【发布时间】:2013-05-02 09:15:41
【问题描述】:
我有一个这样的自定义错误类:
class EntityCrudError < StandardError
attr_reader :action
attr_reader :modelName
attr_reader :entity
attr_reader :errors
def initialize(action, model, entity = nil)
@action = action
@model = model
@entity = entity
@errors = entity.respond_to?(:errors) ? entity.errors : nil
end
end
我在 Sinatra Web 应用程序中使用它。发生错误时,我以 JSON 格式发送此对象的一个实例:
myError.to_json
这个to_json 方法是ActiveSupport implementation。
但是,消息不在 JSON 对象中,因为它不是实例变量。我的 JSON 对象中需要该消息。我有两个想法可以做到这一点,但它们都不起作用......
- 将消息设为
initialize中的实例变量,但那里似乎还不存在。 - 合并消息到 JSON 对象中,但我不知道如何合并它。
哪一个是最好的,我该如何实施?
【问题讨论】:
-
缺少的属性叫什么? myError.message?
-
@MatthewGraves 是的,但
.message是一个返回它的函数。这就是错误在 Ruby 中的工作方式。 -
感谢您的红宝石课程。
标签: ruby json exception sinatra