elixir UTC 日期时间投射到 ecto 模型和参数中

elixir UTC date time casting in ecto models and params

当我创建 table 时,我这样定义 table 字段

add(:arrive_at, :utc_datetime)

并且在用于变更集

的模型中
attr(:arrive_at, :utc_datetime)

但是当我从任何设备发送带有时区的日期时间时,变更集将忽略时区信息并仅投射日期时间部分,例如 2018-02-25 18:40:52.492657+ 03:00 将转换为 #DateTime<2018-02-25 18:40:52.492657Z>。如何让正确的转换工作

在旧的 ecto 版本中有一个错误,或者这在 ecto 2.1.6 中没有处理,不知道确切。但是我通过将 ecto 升级到最新版本并将 config :app, App.Repo, migration_primary_key: [type: :serial], 传递给我的数据库配置来修复它选项。 (因为在不设置主键类型的情况下升级会将所有整数序列键更新为大整数,我不得不以这种方式更新很多函数和触发器)