2015-01-14 2 views
2

Ruby on Rails에서 날짜의 유효성을 검사하는 가장 좋은 방법은 무엇입니까? 나는 "생일"이 데이트인지, 125 년 전인지, 미래가 아닌지 확인해야합니다 (오늘은 괜찮습니다).Rails 4에서 가장 좋은 날짜 확인은 무엇입니까?

나는 세 가지 방법을 시도 :

1) 나는 보석)을 설치 한 후 (다음 코드를 사용

date_validator 보석 : 이것은 설정할 수있는 제외 근무
validates :birthday, 
date: { 
    after: Proc.new {Time.now - 125.years}, message: :after, 
    before: Proc.new {Time.now}, message: :cannot_be_in_the_future 
    } 

숫자 12에 날짜 및 유효성 검사를 통과하십시오.

from = 125.years.ago.to_date 
to = Time.now.to_date 
unless (from..to).include? birthday 
    errors.add(:birthday, :custom_error_msg) 
end 

이것은 잘 작동하고 내 모든 테스트, 하지만을 전달 단점은 당신 것입니다 : 날짜, 사용자 지정 유효성 검사 방법, 날짜의 범위에 있으므로 같은 경우 확인

2) 하나의 오류 메시지 만받습니다. 나는 날짜가 미래에있을 때, 너무 오래 전에 그리고 입력이 날짜가 아닌 경우에 대해 별도의 오류 메시지를 좋아했을 것이다. 그래서 같은 지정 유효성 검사 방법에

3) 다중 검사 :

begin 
    birthday.to_date 
rescue 
    errors.add(:birthday, "must be a date") 
else 
    if birthday > Time.now 
    errors.add(:birtday, "cannot be in the future") 
    elsif birthday < Time.now - 125.years 
    errors.add(:birthday, "cannot be over 125 years ago") 
    end 
end 

이것은 또한 내 모든 테스트를 통과하고, 위에서 설명한대로 내가 다른 메시지를 얻을.

궁금한데, 이것이 최선의 방법입니까? 전혀 개선 될 수 있습니까 (오류 메시지 텍스트가 작동해야한다는 것을 제외하고)?

감사

답변

관련 문제