2017-08-15 109 views
0

我想用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

回答

0

我發現這個問題,time_zone_conversion.rb下的define_method_attribute是一個受保護的方法,在ruby 2中,對於受保護的方法,respond_to函數總是返回false。必須修補程序才能刪除受保護的屬性。