2014-04-27 75 views
0

比方說,我們有以下方面:驗證錯誤消息未設置相關的記錄

class Company 
    belongs_to :address, validate: true 
end 

class Address 
    validates :line1, presence: true 
end 

company = Company.new({ ... }) 
company.address = Address.new({ line1: '' }) 

company.save 

puts company.errors[:address] # nothing 
puts company.errors[:"address.line1"] # can't be blank 

我怎樣才能讓驗證錯誤設置爲相關記錄和不將擁有記錄?這使得嵌套表單更加複雜,因爲這些表單重用部分更加困難。

我確實需要有:

puts company.address.errors[:line1] # can't be blank 

回答

0

custom validation methods

validate :check_address, :on => :create 

def check_address 
    if self.address.line1.blank? 
    errors.add(:line1, "Please fill line 1.") 
    end 
end 
+0

感謝您的回答! – Viorel

+0

對於自定義驗證器來說這並不是真正的必要,因爲默認行爲是做我想要的。驗證錯誤也被設置爲關聯記錄,不僅僅是爲了擁有記錄。無論如何,errors.add(「請填寫行1」)應該是errors.add(:line1,「請填寫行1」。) – Viorel

0

顯然它的工作如預期。只是在我的代碼中遇到困難讓我覺得它沒有。現在感到慚愧......