创建班次时出现此错误...
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'
在application.rb中我有
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
答案 0 :(得分:1)
问题是active_record.default_timezone
仅接受:local
或:utc
,因此您必须以这种方式更改设置:
config.time_zone = 'Rome'
config.active_record.default_timezone = :local
Dopodichétisuggerisco di scrivere semper in inglese mentre programmi per averere coerenza all'interno del codice。
顺便说一句,我建议您在编码时始终输入英文以提高一致性
查看此GIST,其中显示了有关使用:local
的原因的详细信息
另请注意这篇文章的第二个答案,这是正确的答案:https://stackoverflow.com/a/12127232/312907
请注意,它是'Rome'
,而不是'Europe/Rome'
答案 1 :(得分:0)
对于欧洲/罗马,rails实际上已将其映射到“罗马”,因此您应该可以这样做:
config.time_zone = 'Rome'
config.active_record.default_timezone = 'Rome'
的文档中找到所有时区映射