我有模型Teacher
其中有字段:teacher_birthday
。我从视图中获取:teacher_birthday
(单个文本框)。我想确保一个输入日期有这样的格式 - dd.mm.yyyy
(我的意思是我想确定输入日期为12.24.1991
将不会保存在分贝,因为这样的日期是错误的),并且这个日期存在。另外,我想在MODEL中做到这一点。这可能吗?Rails 3.2 - 验证日期格式
0
A
回答
0
声明要在模型中调用的验证方法,然后定义此方法。以下应大致做你需要什么:
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
1
尝试chronic宝石。它具有非常灵活的日期解析,包括你在找什么:
[11] pry(main)> require 'chronic'
=> true
[12] pry(main)> Chronic.parse('24.12.1991'.gsub('.','-'))
=> 1991-12-24 12:00:00 -0700
相关问题
- 1. Rails验证三种日期格式
- 2. 日期格式验证
- 3. 验证日期格式
- 4. Unix日期格式验证
- 5. Rails日期格式
- 6. Rails正则表达式日期验证
- 7. Rails中的日期验证
- 8. Ruby on rails 3.2 accept_nested_attributes验证
- 9. 验证在Rails 3.2中
- 10. 如何验证在Struts2日期格式
- 11. Spring MVC日期格式验证JSR303
- 12. 如何验证日期输入格式
- 13. PDF格式的Javascript日期验证
- 14. 验证日期格式在轨
- 15. 在Marklogic中验证日期格式
- 16. 自定义日期验证格式
- 17. ASP格式的日期验证器
- 18. 验证日期格式“yyMMdd”在ASP.NET
- 19. 验证日期(包括格式和值)
- 20. 验证日期格式在php
- 21. 在C++中验证日期格式
- 22. Cakephp 3.2更改默认日期格式
- 23. jQuery验证插件:验证自定义日期格式
- 24. Textboxfor mvc3日期格式和日期验证
- 25. CakePHP的日期验证使用日期阵列格式
- 26. 使用MomentJS验证日期格式(不是日期字符串)?
- 27. C#。日期模式验证
- 28. orbeon形式 - 日期验证
- 29. 检查日期验证的日期格式大于当前日期以及js
- 30. 日期验证
我试试你的代码之后,我得到了很多在rspec的错误,例如:'故障/错误:@ user.create_teacher( @attr_teacher) NoMethodError: 未定义的方法拆分为星期三,1980年12月31日:日期。另外,当我访问我的页面,我尝试打印无效的日期后提交我得到'未定义的方法'分裂为零:NilClass' – ExiRe 2012-03-20 13:07:37
此外,当我打印一个正确的日期在我的形式我得到:'未定义的方法分裂为Sun, 1991年12月1日:日期' – ExiRe 2012-03-20 13:14:26