好的,我有3个选择框用于选择出生日期 .
我在用户模型中设置常量以提供数月,数年等 .
无论如何,我可以单独成功验证这些选择框 .
What I want to do 将:day,:month和:year组合并存储在:birthday并将整个日期验证为一个,这样我就可以返回1个错误,而不是3个单独的错误 .
此外,这样可以更轻松地将验证日期存储在我的数据库中的生日字段中 .
Part of my form
<td> <%= f.input :day, :required => false, :label => "Birthday: " , :prompt => "Day", :collection => User::DAYS %></td>
<td> <%= f.input :month, :label => false, :prompt => "Month", :collection => User::MONTHS %> </td>
<td> <%= f.input :year, :label => false, :prompt => "Year", :collection => User::YEAR_RANGE %> </td>
Part of User model
MONTHS = [“January”,1],[“February”,2],[“March”,3],[“April”,4],[“May”,5],[“June”,6] ,[“七月”,7],[“八月”,8],[“九月”,9],[“十月”,10],[“十一月”,11],[“十二月”,12]#完成这个DAYS = 1..31#完成此START_YEAR = Time.now.year - 106 END_YEAR = Time.now.year YEAR_RANGE = START_YEAR..END_YEAR class User <ActiveRecord :: Base attr_accessor:day,:month,:year validates_presence_of: day,:message =>'你出生在一个月的哪一天?' validates_presence_of:month,:message =>'你出生在哪个月?' validates_presence_of:year,:message =>'你的出生年份是多少?'结束
2 回答
我会将列更改为datetime(日期似乎永远不适合我) .
然后在视图中使用date_select .
然后在您的模型中验证生日存在 .
如果您需要确保生日年龄超过特定年龄,请编写自定义验证 .
除非我完全忽略了你的观点,否则你只需要一个自定义验证 . 这是如何做到这一点的一个例子 .
-----开始模型代码------
-----开始查看代码------
有关详细信息,请参阅rails guides documentation for custom validation .