Moe*_*Moe 9 activerecord ruby-on-rails
我的Rails应用程序中的模型支持表单中有一个日期字段:
<%= f.date_select :birthday,
{:start_year => Time.now.year,
:end_year => 1900,
:use_short_month => true,
:order => [:month, :day, :year],
:prompt => {:month => 'Month', :day => 'Day', :year => 'Year'}},
{:class => 'year',
:id => 'user_birthday'}
%>
Run Code Online (Sandbox Code Playgroud)
它在模型代码中使用以下方式进行验证:
validates_presence_of :birthday, :message => 'is a required field'
Run Code Online (Sandbox Code Playgroud)
不幸的是,如果用户输入的部分值(例如年份),表单仍然会提交而没有错误.而是将一个时髦的日期值写入数据库.如何使所有三个字段成为强制字段?
我想为此编写一个自定义验证,但我不知道如何正确访问生日元素的各个部分.我怎样才能做到这一点?
谢谢!萌
小智 0
您可以重写该validate_on_create方法,如下所示:
class MyModel < ActiveRecord::Base
def validate_on_create
Date.parse(birthday)
rescue
errors.add_to_base("Wrong date format")
end
end
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
6566 次 |
| 最近记录: |