我正在为颜色编写自定义Ecto.Type
(序列化并解析为CSS颜色)。
该行为指定cast/1
回调应返回:error
,除非成功。它不允许返回错误原因,并且在与Changeset一起使用时将生成通用"无效" 错误说明。
在无效(无法解析)输入的变更集中允许更好的错误消息的最佳方法是什么?我想创建一个validate_color
函数用于更改集,但如果转换失败,该字段将已经存在一般错误。
答案 0 :(得分:1)
从Ecto v3.0.0开始,这是可能的:
返回
{:error, keyword()}
时,返回的关键字列表将保留在变更集错误中,类似于Changeset.add_error/4
。传递一个:message
键,将覆盖默认消息。