[英]ruby on rails - has_many attribute validations
如何對has_one關聯的屬性執行驗證檢查(並將錯誤消息插入錯誤結構)。
如果在“襯衫”或“褲子”中發生錯誤,我該如何訪問該錯誤? 這個錯誤會出現在person.shirt.errors [:color]中嗎?
當我觸發person.save時,是否激活了person.shirt的驗證?
當我觸發person.save並且person.shirt中有錯誤時,會在哪里保存錯誤消息? 在person.shirt.errors或person.errors?
class Person < ActiveRecord::Base
has_one : shirt
has_many : pants
validates :name, :presence => true
validates_length_of :name, :minimum => 3
end
person = Person.new(:name => "JD")
person.shirt.create(:color=> "red")
person.pants.create(:type=> "jeans")
person.valid?
您可以驗證模型的關聯
validates_associated :shirt
這樣當你調用person.save
它會觸發shirt
的驗證。
是的,您可以使用person.shirt.errors
訪問關聯的錯誤,但請確保在觸發驗證后執行此操作。 例如:
person = Person.new
person.errors # => will be empty
這是因為驗證還沒有運行。 所以你需要調用save
或valid?
或任何其他觸發驗證的方法。
person = Person.new
person.valid?
person.errors # => will have errors in person
對於協會來說也是如此:
person.shirt.valid?
person.shirt.errors
但是既然你正在驗證與validates_associated
的關聯,那么person.valid?
就足夠了person.valid?
觸發襯衫的驗證。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.