投射和验证Ecto自定义类型

时间:2017-05-20 09:49:33

标签: elixir ecto

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

该行为指定cast/1回调应返回:error,除非成功。它不允许返回错误原因,并且在与Changeset一起使用时将生成通用"无效" 错误说明。

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

1 个答案:

答案 0 :(得分:1)

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

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

link to docs