首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Rails 3.2 -验证日期格式

Rails 3.2 -验证日期格式
EN

Stack Overflow用户
提问于 2012-03-20 20:40:31
回答 2查看 1.2K关注 0票数 0

我有一个字段为:teacher_birthdayTeacher模型。我从视图(单个文本框)中获取:teacher_birthday。我希望确保输入日期具有这样的格式- dd.mm.yyyy (我的意思是我想确保,输入日期12.24.1991将不会保存在数据库中,因为这样的日期是错误的),并且该日期存在。另外,我想在模型中这样做。这个是可能的吗?

EN

回答 2

Stack Overflow用户

发布于 2012-03-20 20:57:22

试试的gem吧。它有非常灵活的日期解析,包括您正在寻找的内容:

代码语言:javascript
运行
复制
[11] pry(main)> require 'chronic'
=> true
[12] pry(main)> Chronic.parse('24.12.1991'.gsub('.','-'))
=> 1991-12-24 12:00:00 -0700
票数 1
EN

Stack Overflow用户

发布于 2012-03-20 20:55:40

声明要在模型中调用的验证方法,然后定义此方法。下面的代码应该可以大致满足您的需求:

代码语言:javascript
运行
复制
validate :validate_teacher_birthday

private

def validate_teacher_birthday
  errors.add("Teacher birthday", "is invalid.") unless (check_valid_date && valid_date_format)
end

def valid_date_format
  self.teacher_birthday.match(/[0-9][0-9].[0-9][0-9].[0-9][0-9][0-9][0-9]/)
end

def check_valid_date
  begin
    parts = self.teacher_birthday.split(".") #contains array of the form [day,month,year]
    Date.civil(parts[2].to_i,parts[1].to_i,parts[0].to_i)
  rescue ArgumentError
    #ArgumentError is thrown by the Date.civil method if the date is invalid
    false
  end
end
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/9786943

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档