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
이것은 또한 내 모든 테스트를 통과하고, 위에서 설명한대로 내가 다른 메시지를 얻을.
궁금한데, 이것이 최선의 방법입니까? 전혀 개선 될 수 있습니까 (오류 메시지 텍스트가 작동해야한다는 것을 제외하고)?
감사
는