我正在尝试使用 ruby 3.3.4 升级我的 rails 3.0.5 应用程序。最初是红宝石 1.9.3。我能够通过更新宝石来修复大多数问题。但是,我卡在这个问题上,在创建新的活动记录对象时,时间无法正确转换。
例如
Product.new(:bought_on => Date.today)
会将对象保存为日期,而不是日期时间bought_on
。
我能够将问题范围缩小到文件
activerecord-3.0.20/lib/active_record/attribute_methods/time_zone_conversion.rb
出于某种原因,它不调用这两个函数,define_method_attribute
和define_method_attribute=
。
有什么想法吗?
我发现了问题,time_zone_conversion.rb
下的define_method_attribute
是一个受保护的方法,而在 ruby 2 中,respond_to 函数总是为受保护的方法返回 false。不得不打补丁以删除受保护的属性。