想象一下我有一些表单,它有电子邮件和密码字段以及 2 个验证:电子邮件必须是唯一的,密码不应少于 8 个字符。
当我使用 Repo.Insert
或 Repo.update
或任何其他类似的方法,我首先得到与数据库无关的验证错误(密码少于 8 个字符),只有密码正确,它才会访问数据库并发现电子邮件是已经存在并将其再次添加到变更集错误中。
因此,如果用户发送一个带有已经存在的电子邮件和一个短密码的表单,他只会得到关于后者的错误,有没有办法总是访问数据库以便同时获得通常的和数据库特定的错误?
最佳答案
你不能,因为你可能会得到假阴性或者它可能导致其他错误。例如,如果电子邮件为空,我们如何验证它是唯一的?事实上,如果您在数据库中将电子邮件标记为 NOT NULL,您的数据库甚至可能出错。
关于elixir - 使用 Ecto 同时显示常见的和数据库特定的验证错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32373678/