Railsを2.3.9にしたらエラー時の入力値がリセットされるようになった


正確に言うと、数値で入力する項目に文字入れたら0に初期化された。


で、詳しく調べてみたのですが、
railsはエラーが起きたときvalue_before_type_castというメソッドが呼ばれて、
画面入力の値を改めてセットしているんだけど、
どうやらrails2.3.9でそれが変更されているよう。
それが変更されてしまったことにより、うまく動いてくれなくなったみたい。

Rails 2.3.9以前

   def value_before_type_cast(object, method_name)
     unless object.nil?
       object.respond_to?(method_name + "_before_type_cast") ?
       object.send(method_name + "_before_type_cast") :
       object.send(method_name)
     end
   end

Rails 2.3.9

   def value_before_type_cast(object, method_name)
     unless object.nil?
       object.respond_to?(method_name) ?
       object.send(method_name) :
       object.send(method_name + "_before_type_cast")
     end
   end

どうやら、この変更が原因でおかしくなっているようです。
バグだというタレこみもあったらしく、
次のバージョンでは元に戻すらしいお。