elixir - 使用 Ecto 同时显示常见的和数据库特定的验证错误

标签 elixir phoenix-framework ecto

想象一下我有一些表单,它有电子邮件和密码字段以及 2 个验证:电子邮件必须是唯一的,密码不应少于 8 个字符。

当我使用 Repo.InsertRepo.update或任何其他类似的方法,我首先得到与数据库无关的验证错误(密码少于 8 个字符),只有密码正确,它才会访问数据库并发现电子邮件是已经存在并将其再次添加到变更集错误中。

因此,如果用户发送一个带有已经存在的电子邮件和一个短密码的表单,他只会得到关于后者的错误,有没有办法总是访问数据库以便同时获得通常的和数据库特定的错误?

最佳答案

你不能,因为你可能会得到假阴性或者它可能导致其他错误。例如,如果电子邮件为空,我们如何验证它是唯一的?事实上,如果您在数据库中将电子邮件标记为 NOT NULL,您的数据库甚至可能出错。

关于elixir - 使用 Ecto 同时显示常见的和数据库特定的验证错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32373678/

相关文章:

macros - Elixir 宏扩展问题,但仅在一个理解中

elixir - put_assoc 需要验证

join - Elixir : multiple joins and reusable/composable queries

elixir - 直接从 Phoenix 路由器重定向

http - Elixir:Async HTTP 有什么意义?

elixir - Ecto:如何通过选择另一个连接列来预加载记录

elixir - 在 Phoenix Framework 表单中,如何使用变更集将belongs_to 关系设置回 null?

postgresql - 无法混合 ecto.create,角色 'postgres' 不存在

erlang - 缺少模型之间的 ecto 关联

Elixir/Phoenix 限制参数,如 Rails 强参数