我在创建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