2014-01-14 4 views
0

dateOfBirth에 최소 13 세 이상을 설정하려고합니다. 내 사용자 클래스에 age 필드를 갖고 싶지 않고 dateOfBirth을 고수하고 싶습니다.Grails validation on 13 년 전 오늘부터

정확히 13 년을 감한 유효성 검사를 포함하여 윤년을 계산합니다. 내 제약에

현재

나는이 라인을 사용하고 있습니다 : 나는 그것을하지 않고 방법이 있어야합니다 생각 나는 사용자 정의 유효성 검사를 사용하지 선호

dateOfBirth blank: false, max: (new Date() - 13*365)

. 나는 해봤 다음과 같이 use(TimeCategory) 부분에 (내가 믿는) 때문에

dateOfBirth blank: false, use(TimeCategory) { max: new Date() - 13.year }

  • 이는

나는 또한에 매직 넘버 플러그인을 사용하려고했습니다 작동하지 않습니다 아무 소용이.

dateOfBirth blank: false, max: 13.years.ago.toDate()

dateOfBirth blank: false, max: 13.years.ago

com.metasieve.magicnumbers.* 패키지를 수입 : 나는 시도했다.

+1

http://stackoverflow.com/questions/4081169/grails-min-constraint-for-date-validation이 도움이 될 수 있습니다. –

답변

0

첫 번째 시도의 작품 (부정확하게 생각)이 일 것이라고 믿고 날 리드 사실 :

dateOfBirth blank: false, max: ((new Date()).toCalendar().add(-13, Calendar.YEAR)).getTime() 

을 나는이 실제로 하나의 날짜로 컴파일되지 않았는지 확인 것이지만, 그러나 다시 계산 제약이 검사 될 때마다

2

맞춤 검사기에 어떤 문제가 있습니까? 나는 이것이 custom validator가 올바른 선택 인 훌륭한 사례라고 생각한다.

import groovy.time.TimeCategory  

dateOfBirth validator: { 
    use (TimeCategory) { 
     it?.before(13.years.ago) 
    } 
} 
관련 문제