用rails升级ruby到2.3.4 3.0.5

问题描述:

我想用ruby 2.3.4升级我的rails 3.0.5应用程序。原来它是红宝石1.9.3。我能够通过更新宝石来解决大部分问题。但是,我坚持这个问题,当创建新的活动记录对象时,时间不能正确转换。用rails升级ruby到2.3.4 3.0.5

例如

Product.new(:bought_on => Date.today)将保存该对象与bought_on是日期,而不是日期时间。

我能够缩小问题的文件

的ActiveRecord-3.0.20/lib目录/ active_record/attribute_methods/time_zone_conversion.rb

出于某种原因,它不是调用这两个功能,define_method_attributedefine_method_attribute=

任何想法?

+0

您是否试过'DateTime.now'呢? 'Date.today'永远不会有时间,因为它只是一个'日期'。还有什么原因,你更新'ruby',但离开'轨道'在'3.0'(大约在2010年)? – engineersmnky

+0

@engineersmnky,谢谢你的回复。将rails从'3.0'升级到'4'会产生很多重构,我很乐观地认为只有将ruby升级到2才行。 – user3516436

+0

我发现这个问题,'time_zone_conversion.rb'下的'define_method_attribute'是一个受保护的方法,在ruby 2中,'respond_to'函数对于受保护的方法总是返回false。必须修补程序才能删除受保护的属性。 – user3516436

我发现这个问题,time_zone_conversion.rb下的define_method_attribute是一个受保护的方法,在ruby 2中,对于受保护的方法,respond_to函数总是返回false。必须修补程序才能删除受保护的属性。