Elixir 如何正确地将exto.DateTime值强制转换为utc_DateTime字段?
我有多个包含类型为Elixir 如何正确地将exto.DateTime值强制转换为utc_DateTime字段?,elixir,ecto,Elixir,Ecto,我有多个包含类型为:utc\u datetime的字段的EXTO表模式。当我读取其中一个表时,我会返回:utc_DateTime列的exto.DateTime值。当使用这些值之一创建变更集以将其写回表中时,我在生成变更集的函数中包含了对|>cast(params,[:my_utc_datetime_field]的调用,但cast失败,错误设置为[my_utc_datetime_field:{“is invalid”,[type::utc_datetime,validation::cast]} 当
:utc\u datetime
的字段的EXTO表模式。当我读取其中一个表时,我会返回:utc_DateTime
列的exto.DateTime
值。当使用这些值之一创建变更集以将其写回表中时,我在生成变更集的函数中包含了对|>cast(params,[:my_utc_datetime_field]
的调用,但cast失败,错误设置为[my_utc_datetime_field:{“is invalid”,[type::utc_datetime,validation::cast]}
当我创建变更集时,我可以手动添加函数调用来将exto.DateTime
值转换为不同的类型,但是这看起来很笨重而且容易出错,我觉得exto.changeset.cast
的全部目的就是为我做这些类型的转换。而且,当exto返回当我查询列时,使用exto.DateTime
值,但不能使用相同的值将相同的数据写回同一列
这里有什么我遗漏的吗?这个演员阵容失败是因为我试图做一些愚蠢的事情,还是这个功能到目前为止还没有实现,或者
我还应该注意到,我正在使用一个自定义的第三方数据库适配器。我突然想到,可能它不应该首先为
:utc\u DateTime
列返回exto.DateTime
值,并且可能需要修复适配器以将这些列转换为不同的类型。请大家澄清一下这里提供将非常有帮助,非常感谢。是的,:utc_datetime
应该返回Elixir的新的原生datetime
结构,它将正确地与cast
一起工作。问题可能出在适配器中。你能链接到你正在使用的适配器吗?@Dogbert谢谢!我编辑了我们的适配器和所有内容现在工作得很好。这仍然是一项正在进行的工作,所以我们还没有为它的发布做任何重大的宣布,但我们确实在这里提供了源代码,以防您有兴趣体验一下高峰: