2012-02-15 18 views
2

使用Rails 3,我有一個has_many地址的賬戶模型。在地址模型中,我定義了一個before_destroy回調方法,該方法可防止銷燬,並在地址對象與第三個模型關聯時向地址對象添加錯誤。這可以很好地防止刪除帳戶或地址。Rails before_destroy錯誤消息可從父母訪問

我的問題出現在刪除帳戶,因爲我期望帳戶對象的錯誤包含地址錯誤,但它沒有。有沒有辦法在帳戶錯誤中包含地址錯誤消息?

回答

0

錯誤消息通常分配給它們應用的模型對象。

如果你真的想,你可以抓住這些錯誤,並在您的地址模型的誤差哈希他們堅持:

class Account < ActiveRecord::Base 
    before_destroy :check_for_destruction 

    def check_for_destruction 
    rejected = addresses.reject{|a| a.can_destroy?} # returns array of addresses that now have errors (they should return false) 
    rejected.each do |address| 
     address.errors.each do |e| 
     errors.add_to_base(e) 
     end 
    end 
    end 
end 

類似的東西應該工作,假設你已經定義了一個Address#can_destroy?方法。 (免責聲明:代碼未經測試,但應該給你一個很好的起點)