2013-05-08 51 views
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 

我在西納特拉Web應用程序使用。當錯誤發生時我發送此對象JSON格式的一個實例:

myError.to_json 

to_json方法是ActiveSupport implementation

但是,該消息不在JSON對象中,因爲它不是實例變量。我需要在我的JSON對象中的消息。我有兩個想法要做到這一點,但他們都沒有工作......

  1. 請在郵件中initialize一個實例變量,但它似乎並不還不存在。
  2. 合併消息到JSON對象中,但我不知道如何合併它。

哪一個都是最好的,我該如何實現它?

+0

什麼是缺少調用的屬性? myError.message? – 2013-05-08 08:11:35

+0

@MatthewGraves是的,但'.message'是一個返回它的函數。這就是錯誤在Ruby中工作的方式。 – MarioDS 2013-05-08 08:12:56

+0

感謝您的寶貴經驗。 – 2013-05-08 08:15:35

回答

0

我只是想的東西的作品:

class EntityCrudError < StandardError 
    .. 
    .. 

    def to_json 
    @message = self.message 
    super 
    end 
end 

所以,我只是做一個實例變量,當我需要JSONify類,然後讓super實施做休息。