设置 unique_constraint Ecto

Setting unique_constraint Ecto

我有一个带有电子邮件字段的用户模型。现在我想让它独一无二,所以,根据文档,我需要申请:

cast(user, params, ~w(email), ~w())
|> unique_constraint(:email)

此外,我应该在迁移中定义唯一索引:

create unique_index(:users, [:email])

问题是,当我尝试在迁移中定义它并添加更多字段时它不起作用,现在我试图只用这个 create unique_index(:users, [:email]) 定义迁移并且它正在创建一个错误:

[info]  create index users_email_index
** (Postgrex.Error) ERROR (unique_violation): could not create unique index "users_email_index"

我做错了什么?

当您的 table.

中已经违反唯一约束时,可能会发生这种情况

请检查您的用户中没有重复的电子邮件地址 table。

您可以 运行 mix do ecto.drop, ecto.create, ecto.migrate 删除并重新创建数据库和 tables。