0

validates_timeliness gem を使い始めてから、次の例外が頻繁に発生します

    Message undefined method `<' for nil:NilClass
    Location    /client_issue/create?client_id=15285
    Action  create
    Controller  client_issue
    Query   client_id=15285
    Method  POST
    SSL true

誰かが 2012 年 9 月 28 日のような日付を入力した場合、例外が発生します。正しい 3 文字の月 (つまり、2012 年 9 月 28 日) を使用する場合、問題はありません。実際、無効な月名があると、たとえば 28 bjhg 2012 のように例外が発生します。

これがスタックトレースのトップです

    /shared/bundle/ruby/1.8/gems/timeliness-0.3.6/lib/timeliness/parser.rb:142:in `fast_date_valid_with_fallback'
    /shared/bundle/ruby/1.8/gems/timeliness-0.3.6/lib/timeliness/parser.rb:24:in `make_time'
    /shared/bundle/ruby/1.8/gems/timeliness-0.3.6/lib/timeliness/parser.rb:17:in `parse'
    /shared/bundle/ruby/1.8/gems/validates_timeliness-3.0.14/lib/validates_timeliness/attribute_methods.rb:49:in `start_date='
    /shared/bundle/ruby/1.8/gems/activerecord-3.2.8/lib/active_record/attribute_assignment.rb:85:in `send'
    /shared/bundle/ruby/1.8/gems/activerecord-3.2.8/lib/active_record/attribute_assignment.rb:85:in `assign_attributes'

私のモデル モデルの関連部分は次のようになります。

    class ClientIssue < PauaServiceTable
      validates_date :start_date ,:allow_blank => true 
       ...
    end

私の宝石のイニシャライザには、次のものがあります。

    config.restriction_shorthand_symbols.update(
      :now   => lambda { Time.current },
      :today => lambda { Date.current }
     )
     config.parser.remove_formats(:date, 'm/d/yy')
     config.parser.remove_us_formats
     config.parser.use_euro_formats

例外が発生する理由がわかりません。古いごみを渡し、例外ではなく、無効な日付メッセージを取得できるはずです。何か設定が間違っていませんか?

4

2 に答える 2

0

メソッドvalidates_timelinessを提供するgem と、エラーを発生させる gem の両方を使用しています。validates_datetimeliness

おそらく両方ではなく、どちらかを使用するでしょう。

于 2012-10-02T09:06:27.343 に答える
0

この問題は、適時性ジェムの問題のようです。ここで私の問題への回答を参照してください

ただし、月の名前が間違っていると例外が発生するため (2012 年 9 月 28 日など)、同様に例外がスローされます。日付を手動で検証することにしました。そうしないと、ユーザーが常に例外を経験することになります。

于 2012-10-02T09:06:33.307 に答える