ruby on rails - проверка атрибутов has_many - PullRequest
0 голосов
/ 03 марта 2011

Как выполнить проверки достоверности (и вставить сообщения об ошибках в структуру ошибок) для атрибута, являющегося ассоциацией has_one.

Если в «рубашке» или «брюках» произошла ошибка, как я могу получить доступ к этой ошибке? Будет ли ошибка в person.shirt.errors [: color]?

Когда я запускаю person.save, активируются ли проверки для person.shirt?

Когда я запускаю person.save и возникает ошибка в person.shirt, где будет сохранено сообщение об ошибке? В person.shirt.errors или в person.error?

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?

1 Ответ

2 голосов
/ 03 марта 2011

Вы можете проверить связь модели с

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? будет достаточно вызвать проверки рубашки.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...