私のイベントモデルでは、検証のためにこれらの行を(持っていました):
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
これらのテストは失敗します ( leemachinの提案のおかげで、私はリファクタリングしました)
it "should accept nil as begining_date" do
@event.begins_at=nil;
@event.should be_valid
end
it "should have valid deadline" do
@event.deadline="Not a date";
@event.should_not be_valid
end
一方、これらは通過します
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
開始日が nil の場合は常に締切を nil に設定するプログラム ロジックの回避策がありますが、それでもテストは失敗します。何か案は?
ありがとう
PS: gem "date_validator", "~> 0.6.3"* を使用