2010-09-08 16 views
2

我想訪問ActiveRecord :: Error對象的type屬性。我這樣做的原因是因爲我想根據失敗的驗證類型(一個屬性可能以多種方式驗證失敗,因此該屬性本身不夠)而將用戶重定向到不同的頁面。訪問單個Rails ActiveRecord錯誤的更好方法?

我發現,我能做到這一點的唯一方法是:

obj.errors.instance_variable_get(:@errors)["attr"][0].type

這只是普通的討厭。有沒有更好的辦法?

回答

2

看起來像你最好的選擇是延長ActiveRecord::Errors

class ActiveRecord::Errors 
    def error_type(attr) 
    @errors[attr] && @errors[attr].first.type 
    end 
end 
+0

謝謝。我還發現了一個名爲each_error的公開方法,但我更喜歡你的方法。 – 2010-09-09 15:54:26

相關問題