强制转换和验证 Ecto 自定义类型



我正在为颜色编写一个自定义Ecto.Type(序列化并解析为CSS颜色(。

该行为指定除非成功,否则cast/1回调应返回:error。它不允许返回错误原因,并且在与变更集一起使用时将生成通用的"无效">错误描述。

在无效(不可分类(输入的变更集中允许更好的错误消息的最佳方法是什么?我想创建一个用于变更集的validate_color函数,但如果转换失败,该字段将已经出现一般错误。

从 Ecto v3.0.0 开始,这是可能的:

返回 {:error, keyword()} 时,返回的关键字列表将保留在变更集错误中,类似于 Changeset.add_error/4 。传递:message密钥将覆盖默认消息。

链接到文档

最新更新