我有多个Ecto表模式,其中包含:utc_datetime
类型的字段。当我从其中一个表中读取数据时,我会返回Ecto.DateTime
列的:utc_datetime
值。使用其中一个值创建变更集以将其写回表时,我在函数中包含对|> cast(params, [:my_utc_datetime_field]
的调用以生成变更集,但是强制转换失败且错误设置为[my_utc_datetime_field: {"is invalid", [type: :utc_datetime, validation: :cast]}]
。< / p>
我可以手动添加函数调用,以便在创建变更集时将Ecto.DateTime
值转换为其他类型,但这看起来很笨拙且容易出错,而且我觉得{{{{{{ 1}}是为我做这些转换。当我查询一个列时,Ecto返回Ecto.Changeset.cast
值也感觉很奇怪,但是这个值不能用于将相同的数据写回同一列。
这里有什么我想念的吗?这个演员是否失败,因为我正在尝试做一些愚蠢的事情,或者这个功能到目前为止尚未实现,还是......?
我还应该注意到我正在使用自定义的第三方数据库适配器。在我看来,可能不应该首先返回Ecto.DateTime
列的Ecto.DateTime
值,并且可能需要修复适配器以将这些列转换为其他类型。人们在这里提供的任何澄清都会非常有用并且非常感激。