【发布时间】:2016-07-01 07:54:06
【问题描述】:
我有以下方法可以检查用户生日(“%d/%m/%Y”格式)至少为 18 岁。
def person_age
if person_birthdate.present?
now = Time.now.utc.to_date
begin
parsedDate = Date.parse(person_birthdate, '%d/%m/%Y')
diff = now.year - parsedDate.year
diff -= (diff.years.since(parsedDate) > now ? 1 : 0)
if diff < 18
errors.add :person_birthdate, 'You should be at least 18'
end
rescue
errors.add :person_birthdate, 'Date not valid'
end
else
errors.add :person_birthdate, 'Date not valid'
end
end
但是 if 条件太多了,知道如何让它看起来更好吗?
【问题讨论】:
-
您似乎将生日作为字符串存储在数据库中。你为什么这样做?如果它是一个日期列,Rails 会为您处理解析,并且您的验证会容易得多。
标签: ruby-on-rails ruby date if-statement logic