簡體   English   中英

ruby on rails - has_many屬性驗證

[英]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

這是因為驗證還沒有運行。 所以你需要調用savevalid? 或任何其他觸發驗證的方法。

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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM