DateTime和时区将完整功能的Rails 4.1.7.1升级到4.2

时间:2014-12-28 14:51:17

标签: ruby-on-rails ruby datetime ruby-on-rails-4 ruby-on-rails-4.2

我的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的行为方式与日期和时间相同,具有相同的代码库?什么是补救措施?

0 个答案:

没有答案