2012-04-18 7 views
1

Agile Web Development with Rails과 같은 책에서 validates_whatever_of 유효성 검사 방법에 대한 언급이 없으므로 모든 유효성 검증 예제는 validates :attr, :whatever => true을 사용하여 완료 되었습니까? 나는 레일스를 배우기 시작했고, 이것이 나를 혼란스럽게 만들었다.레일 유효성 검사 3.2

답변

2

무엇인가 : 3.X에서

validates_presence_of :user_name 

, 당신은 지금 :

이 오래된 방법은 계속 지원됩니다
validates :username, :presence => true 

, 내 생각 하지만 더 이상 사용되지 않습니다.

정말 똑같은 표현 방식입니다. 오래된 책과 튜토리얼은 이전의 책과 튜토리얼을 사용하지만, 3.x 스타일로 변환하는 것은 매우 간단해야합니다. 예를 들어 http://api.rubyonrails.org/classes/ActiveModel/Validations/ClassMethods.html#method-i-validates을 참조하십시오.

2

validates 구문은 동일한 내용에 대해 단지 new shortcut입니다. 비슷한 한계를 지닌 많은 속성을 검증 할 때 특히 유용합니다. 그래서이 :

validates_presence_of :one 
validates_presence_of :two 
validates_presence_of :three 
validates_presence_of :four 

는 또한

validates :one, :two, :three, :four, :presence => true 

에 사용자 지정 유효성 검사기에 좋은, 일관된 인터페이스를 것을 줄일 수있다. 당신이 말한 것 레일 2.X에서는

+0

하지만'validates_presence_of : one, : two, : three, : four'도 작동합니다. – Ansd

+0

아, 맞습니다. :-) 이것은 아마도 고안된 것이지만, 새로운 계획에서 여러분은 validate에 그것들을 집어 넣음으로써 "presence"외에 "validates"를 사용하여 다른 aspect를 검증 할 수 있습니다. 새로운 스키마의 가장 좋은 논점은 ActiveRecord :: Base 패치를 원숭이없이 확장 할 수 있다는 것입니다. 위의 예제에서와 같이 사용자 정의 유효성 검사기를 추가하면 유효성 검사 옵션으로 사용할 수 있습니다. 예를 들어 EmailValidator를 생성하면': valid => true'를 사용할 수 있습니다. –

+0

매우 도움이되는 Rob. 감사! :) – Ansd