我的代码有效。我在这里遇到的问题是,从2010年到1995年,每年都会出现11月31日和4月31日这样的日期,这意味着我必须输入所有这些日期,例如[Date.new(2012,09,31),Date.new( 2011,09,31)]等等。我试图让这个验证工作只在一个月和一天,以避免太多的打字或换句话说缩短我的代码请看我的描述 型号/ 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
答案 0 :(得分:1)
首先做Date.new(2012,9,31)
会给你一个ArgumentError: invalid date
。 IMO没有必要验证这一点,因为没有人能够构建这样的日期(只是在这个模型之外处理这个例外)。
因此,如果next_shoeing
是Date
的实例,则无论如何它都不会无效。