轨道:时间:类的未定义方法"欧洲/罗马"



我在创建shift时会有这个错误...

ActiveRecord::MultiparameterAssignmentErrors (2 error(s) on assignment of multiparameter attributes [error on assignment [8, 0, 1970, 1, 1] to inizio (undefined method `Europe/Rome' for Time:Class),error on assignment [16, 0, 1970, 1, 1] to fine (undefined method `Europe/Rome' for Time:Class)]):
  app/controllers/shifts_controller.rb:43:in `create'

在应用程序中。rbi

config.time_zone = 'Europe/Rome'
config.active_record.default_timezone = 'Europe/Rome'

模型是

class Shift < ActiveRecord::Base
  after_initialize do
    self.stato ||= true
    self.inizio ||= Time.zone.now
    self.fine ||= Time.zone.now
  end
end

控制器是:http://nopaste.info/3268dc795c.html

迁移是:http://nopaste.info/eb674af117.html

问题是active_record.default_timezone仅接受:local:utc,因此您必须以这种方式更改设置:

config.time_zone = 'Rome'
config.active_record.default_timezone = :local

dopodichéti suggerisco di scrivere semper in inglese mentre programmi programi coerenza all'interno del codice。
,顺便说一句,我建议您在编码时始终输入英语以提高一致性

查看此要旨,其中显示了有关为什么使用:local的一些详细信息。
请观看这篇文章的第二个答案,这是正确的答案:https://stackoverflow.com/a/12127232/312907

要小心,它是'Rome',而不是'Europe/Rome'

对于欧洲/罗马导轨实际上已将其映射到'罗马',因此您应该能够做到这一点:

config.time_zone = 'Rome'
config.active_record.default_timezone = 'Rome'

您可以在ActiveSupport :: TimeZone

的文档中找到所有时区映射

相关内容

  • 没有找到相关文章

最新更新