0

我正在尝试验证我所有的日期都在未来。我的模型中有 4 个日期,所以我使用每个循环来评估它们。我收到一条错误消息:'undefined method `to_sym' for Tue, 09 Jul 2013 00:00:00 UTC +00:00:Time'。这是因为时间对象正在被转换为符号。但我想要日期实际引用的符号。有没有办法做到这一点?我的验证器:

def dates_must_be_in_future
    [drop_off_start, drop_off_end, pickup_start, pickup_end].each do |date|
      errors.add(date, "must be in the future") if Date.today > date
      puts '---------------------'
      puts self.errors.on(:date)
    end
  end
4

1 回答 1

2

添加错误(errors.add)时,您需要传入实际的属性名称,例如

errors.add(:drop_off_start, "must be in the future")

你正在传递date这只是一个Time对象。

您实际上可以执行以下操作:

def dates_must_be_in_future
  [:drop_off_start, :drop_off_end, :pickup_start, :pickup_end].each do |date|
    errors.add(date, "must be in the future") if Date.today > self.send(date)
  end
end
于 2013-08-01T09:46:38.870 回答