如何将Ecto.DateTime值正确转换为utc_datetime字段?

时间:2017-06-20 18:15:28

标签: elixir ecto

我有多个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值,并且可能需要修复适配器以将这些列转换为其他类型。人们在这里提供的任何澄清都会非常有用并且非常感激。

0 个答案:

没有答案