代码之家  ›  专栏  ›  技术社区  ›  humdinger

Ecto:两个独特的领域

  •  0
  • humdinger  · 技术社区  · 8 年前

    我在同一个表中的字段上创建了两个唯一的索引,并希望使用unique\u constraint/3对其进行验证,但是,前端上的错误消息仅显示其中一个字段,如果它们不唯一,则不会同时显示这两个字段。如果两个字段都不唯一,如何使这两个错误都显示出来?

    1 回复  |  直到 8 年前
        1
  •  1
  •   Mike Buhot    8 年前

    您可以使用 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)