0

私のイベントモデルでは、検証のためにこれらの行を(持っていました):

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"* を使用

4

0 に答える 0