【问题标题】:Ecto: Two unique fieldsEcto:两个独特的领域
【发布时间】:2017-11-23 19:09:14
【问题描述】:
我在同一个表中的字段上创建了两个唯一索引,并希望使用 unique_constraint/3 来验证它们,但是,前端的错误消息只显示任一字段,如果它们不是唯一的,则不会同时显示.如果两个字段都不是唯一的,我怎样才能显示这两个错误?
【问题讨论】:
标签:
elixir
phoenix-framework
ecto
【解决方案1】:
您可以使用Changeset.unsafe_validate_unique/4 查找所有唯一的验证错误并将其报告给用户。 unique_constraint 还必须用于在插入新记录之前处理数据更改的潜在竞争条件。
changeset
|> unsafe_validate_unique([:email], MyApp.Repo, message: "email is already in use")
|> unsafe_validate_unique([:phone], MyApp.Repo, message: "phone number is already registered")
|> unique_constraint(:email)
|> unique_constraint(:phone)