Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/62.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ruby/21.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails Rails:日期验证或无/空白_Ruby On Rails_Ruby_Validation_Date - Fatal编程技术网

Ruby on rails Rails:日期验证或无/空白

Ruby on rails Rails:日期验证或无/空白,ruby-on-rails,ruby,validation,date,Ruby On Rails,Ruby,Validation,Date,在我的事件模型中,我(过去)使用以下行进行验证: validates_date_of :begins_at validates_date_of :deadline validates :deadline, :date => {:before_or_equal_to => :begins_at} 现在我想要两个球场的选项,以迎合“待定”事件。然而,如果我有 validates_date_of :begins_at, :allow_nil => true validates_da

在我的事件模型中,我(过去)使用以下行进行验证:

validates_date_of :begins_at
validates_date_of :deadline
validates :deadline, :date => {:before_or_equal_to => :begins_at}
现在我想要两个球场的选项,以迎合“待定”事件。然而,如果我有

validates_date_of :begins_at, :allow_nil => true
validates_date_of :deadline, :allow_nil => true
validates :deadline, :date => {:before_or_equal_to => :begins_at }, :allow_nil => true
这些测试失败了(多亏了李梅钦的建议,我进行了重构)

然而这些都过去了

it "should accept both dates as nil"  do
@event.begins_at=nil;
@event.deadline=nil;
@event.should be_valid
end

it "should accept nil as deadline"  do
@event.deadline=nil;
@event.should be_valid
end
我在程序逻辑中有一个变通方法,每当开始日期为零时,就将截止日期设置为零,但测试仍然失败。 有什么想法吗

谢谢


<强> ps:使用宝石“DATEYValueTalk”、“~>0.63”*<强>

应考虑将第二次测试重构为个别情况。然后,您可以更容易地确定哪个断言失败,并使您的测试更具可读性。
it "should accept both dates as nil"  do
@event.begins_at=nil;
@event.deadline=nil;
@event.should be_valid
end

it "should accept nil as deadline"  do
@event.deadline=nil;
@event.should be_valid
end