0

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

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 的实现

但是,消息不在 JSON 对象中,因为它不是实例变量。我的 JSON 对象中需要该消息。我有两个想法可以做到这一点,但它们都不起作用......

  1. 使消息成为 中的实例变量initialize,但它似乎还不存在。
  2. 将消息合并到 JSON 对象中,但我不知道如何合并它。

两者中哪一个是最好的,我该如何实施?

4

1 回答 1

0

我只是想到了一些可行的方法:

class EntityCrudError < StandardError
  ..
  ..

  def to_json
    @message = self.message
    super
  end
end

因此,当我需要对类进行 JSON 化时,我只需创建一个实例变量,然后让super实现完成剩下的工作。

于 2013-05-08T08:11:35.660 回答