用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_attribute
和define_method_attribute=
。
任何想法?
答
我发现这个问题,time_zone_conversion.rb
下的define_method_attribute
是一个受保护的方法,在ruby 2中,对于受保护的方法,respond_to函数总是返回false。必须修补程序才能删除受保护的属性。
您是否试过'DateTime.now'呢? 'Date.today'永远不会有时间,因为它只是一个'日期'。还有什么原因,你更新'ruby',但离开'轨道'在'3.0'(大约在2010年)? – engineersmnky
@engineersmnky,谢谢你的回复。将rails从'3.0'升级到'4'会产生很多重构,我很乐观地认为只有将ruby升级到2才行。 – user3516436
我发现这个问题,'time_zone_conversion.rb'下的'define_method_attribute'是一个受保护的方法,在ruby 2中,'respond_to'函数对于受保护的方法总是返回false。必须修补程序才能删除受保护的属性。 – user3516436