Ruby on rails 3 正在按型号更改Rails日期

Ruby on rails 3 正在按型号更改Rails日期,ruby-on-rails-3,date,Ruby On Rails 3,Date,我有一张有日期选择的表格 我有以下表格: <%= date_select :user, :birthday, {:start_year => Time.now.year, :end_year => 1910,:order => [:day,:month,:year], :prompt => { :day => 'day', :month => 'month', :year => 'year' }}, { :class => "default"

我有一张有日期选择的表格

我有以下表格:

<%= date_select :user, :birthday, {:start_year => Time.now.year, :end_year => 1910,:order => [:day,:month,:year], :prompt => { :day => 'day', :month => 'month', :year => 'year' }}, { :class => "default" } %>             
以下是用户在日志中提交内容的示例:

"user"=>{"name"=>"rewrwe", "birthday(3i)"=>"1", "birthday(2i)"=>"", "birthday(1i)"=>"2008", "email"=>""}}
请注意,月份的值为空

在控制器中,我创建用户

create
@user = User.new(params[:user])

If @user.save
#go to the confirm page
end

end
即使缺少月份,也不会显示任何错误消息,因为由于某种原因,当我尝试保存模型时,它会将空月份转换为1月或1月

这是非常令人沮丧的,因为我不希望用户意外地提交坏数据


如何阻止Rails这样做并确保提交了所有日期信息?

使用attr\u accessor分隔三个字段:

然后在你看来,他们每个人都有不同的选择。这就是date_select所做的一切,但它在视图中而不是在模型中拆分它们,这使得验证每个字段都很困难

create
@user = User.new(params[:user])

If @user.save
#go to the confirm page
end

end
class User < ActiveRecord::Base
  attr_accessor :birthday_year, :birthday_month, :birthday_date
  validates_presence_of :birthday_year, :birthday_month, :birthday_date
  # ...
end