DateTime仅验证日期

时间:2013-12-03 10:06:37

标签: ruby-on-rails ruby-on-rails-3

我已经为两个字段添加了日期时间验证(从,结束时开始)我的参数如下

"user"=>{

"starts_at(1i)"=>"2013", 

"starts_at(2i)"=>"12", 

"starts_at(3i)"=>"3", 

"starts_at(4i)"=>"09", 

"starts_at(5i)"=>"47", 

"ends_at(1i)"=>"2013", 

"ends_at(2i)"=>"12", 

"ends_at(3i)"=>"10", 

"ends_at(4i)"=>"01",

"ends_at(5i)"=>"47"}

controller.rb

def create
  ann = params[:user]
  start_date = DateTime.civil ann["starts_at(1i)"].to_i, ann["starts_at(2i)"].to_i, ann["starts_at(3i)"].to_i, ann["starts_at(4i)"].to_i, ann["starts_at(5i)"].to_i
  end_date = DateTime.civil ann["ends_at(1i)"].to_i, ann["ends_at(2i)"].to_i, ann["ends_at(3i)"].to_i, ann["ends_at(4i)"].to_i, ann["ends_at(5i)"].to_i
  if start_date <= end_date
    //codes to create user page
  else
    flash[:notice] = 'Ends at should be greater than starts at'
    render :action => 'new'
  end
end

以上仅验证日期字段。它不会显示时间字段的验证。如果我检查starts_atends_at,我的日志会给出

Tue, 03 Dec 2013 09:47:00 +0000

Tue, 10 Dec 2013 01:47:00 +0000

如何更改代码以验证时间?

1 个答案:

答案 0 :(得分:0)

将DateTime转换为Timestamp后尝试进行比较。由于时间戳是一个整数值,因此计算会更准确。