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_attribute
和define_method_attribute=
。
任何想法?
您是否試過'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