我的rails 4.1.7.1应用程序运行正常。至少,我希望它的方式。 但是,升级到4.2后(使用官方升级指南),我遇到了一些问题。
首先。使用DateTime.parse会抛出一个错误:'未定义的方法`getlocal' 。代码是:
# Add the schedule
schedule_in_db = Schedule
.where(
:event_id => event_in_db.id,
:ext_id => schedule['id']
)
.first_or_create!(
:start_time => DateTime.parse(schedule['start_time']), # example value: 2014-12-18T14:00:00.000+00:00"
:end_time => DateTime.parse(schedule['end_time']),
:type_id => type_in_db.id
)
为了解决这个问题,我使用了Time.parse或Time.zone.parse。这解决了错误。但是,出现了一个新问题。我的start_time和end_time变量提前一小时填充。所以08:15成为09:15。
这是我的app.rb配置:
config.time_zone = 'Stockholm' #uncommented and set to proper zone
config.active_record.default_timezone = :local
config.active_record.time_zone_aware_attributes = false
无论我尝试什么组合,我的活动仍然提前一小时。
有趣的是,在创建计划后,这将返回零计划:
Schedule.where start_time: schedule['start_time']
但是返回正确的行:
Schedule.where start_time: Time.parse(schedule['start_time'])
我想我的问题是: 为什么rails 4.2与4.1.7.1的行为方式与日期和时间相同,具有相同的代码库?什么是补救措施?