需要ruby错误消息作为实例变量

时间:2013-05-08 08:07:55

标签: ruby json exception sinatra

我有一个这样的自定义错误类:

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对象中需要该消息。我有两个想法可以做到这一点,但它们都不起作用......

  1. 将消息设为initialize中的实例变量,但它似乎尚未存在。
  2. 将消息合并到JSON对象中,但我不知道如何合并它。
  3. 哪一个最好,我该如何实施?

1 个答案:

答案 0 :(得分:0)

我只想到了有用的东西:

class EntityCrudError < StandardError
  ..
  ..

  def to_json
    @message = self.message
    super
  end
end

所以我只需要在需要JSONify类时创建一个实例变量,然后让super实现完成剩下的工作。