2011-03-06 54 views
0

我正在使用Ruby on Rails 3,並試圖按to handle errors "a la Rails way"的順序發佈類帳戶。如何使用'ActiveModel :: Errors'模塊向類添加錯誤

在我的模型我有

class Users::Account 
    extend ActiveModel::Naming 
    extend ActiveModel::Translation 
    include ActiveModel::Validations 
    include ActiveModel::Conversion 

    def persisted? 
    false 
    end 

    attr_reader :errors 

    def initialize(attributes = {}) 
    @errors = ActiveModel::Errors.new(self) 

    @firstname = attributes[:firstname] 
    @lastname = attributes[:lastname] 
    ... 
    end 
end 

我想用ActiveModel::Errors

--- 
errors: 
    base: Invalid account. 
    firstname: Too short. 

,這樣我可以在上面做類「封裝」下面的哈希值,之後將上述錯誤散列在類中,像這樣

@account.errors # => Hash of errors 

調試測試情況是(總是)以下,因爲我不知道如何將錯誤附加到類。

firstname: T 
lastname: Test surname 
errors: !omap [] 

我該怎麼做?

回答

-1

可以真正做到

somemodel_instance.errors.add(:some_attr, "some error message") 

更多信息,請參閱here,希望這有助於=)

+0

我有錯誤的散列... – user502052 2011-03-06 13:30:17

+0

如果是這樣的話,可能哈希不是一個好的做法,不是嗎?或者如果你堅持使用散列,那麼你將不得不沿着{:attr_1 =>「message 1」,:attr_2 =>「message 2」}的行構造它。 – Staelen 2011-03-06 14:08:50