我有一个这样的自定义错误类:
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
中的实例变量,但它似乎尚未存在。哪一个最好,我该如何实施?
答案 0 :(得分:0)
我只想到了有用的东西:
class EntityCrudError < StandardError
..
..
def to_json
@message = self.message
super
end
end
所以我只需要在需要JSONify类时创建一个实例变量,然后让super
实现完成剩下的工作。