排除日期的验证。

时间:2012-12-08 11:07:02

标签: ruby-on-rails ruby ruby-on-rails-3

我的代码有效。我在这里遇到的问题是,从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

1 个答案:

答案 0 :(得分:1)

首先做Date.new(2012,9,31)会给你一个ArgumentError: invalid date。 IMO没有必要验证这一点,因为没有人能够构建这样的日期(只是在这个模型之外处理这个例外)。

因此,如果next_shoeingDate的实例,则无论如何它都不会无效。