0

私のコードは機能します。ここでの問題は、11月31日や4月31日のような日付が、2010年から1995年まで毎年発生する可能性があることです。つまり、[Date.new(2012,09,31)、Date.new( 2011,09,31)]など。入力しすぎないように、つまりコードを短くするために、この検証を1か月と1日だけ機能させようとしています。Model/profile.rbの説明を参照してください。

 validate :excluded_dates

private
def excluded_dates
exclusion_dates = [Date.new(2012,9,31), Date.new(2012,2,1)]
if exclusion_dates.include?(self.next_shoeing)
  self.errors.add(:next_shoeing, "cannot be on a reserved date.")
end
4

1 に答える 1

1

まず最初に行うDate.new(2012,9,31)と、 がスローされますArgumentError: invalid date。IMO では、誰もそのような日付を作成できないため、これを検証する必要はありません (このモデルの外でこの例外を処理するだけです)。

したがって、それnext_shoeingのインスタンスである場合は、Dateとにかく無効にはなりません。

于 2012-12-08T12:41:55.903 に答える