0

すべての日付が未来であることを検証しようとしています。モデルに 4 つの日付があるので、each ループを使用してそれらを評価します。「2013 年 7 月 9 日 00:00:00 UTC +00:00:Time の未定義のメソッド `to_sym'」というエラー メッセージが表示されます。これは、時間オブジェクトがシンボルに変換されているためです。しかし、日付が実際に参照する記号が必要です。これを行う方法はありますか?私のバリデータ:

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 に答える