У меня в модели User есть следующее:
def changeset(user, attrs) do
user
|> cast(attrs, [:login, :email])
|> validate_required([:login, :email])
|> unique_constraint(:login)
|> unique_constraint(:email)
end
Однако просто установка unique_contraint таким способом не работает. Я все еще получаю дубликаты имени входа и электронной почты при тестировании моего контроллера.
Я получил это, но мне пришлось поставить аргумент ключевого слова :unique
в true
в схеме модели, а также создать уникальный индекс на столбец в миграции.
Разве Ecto не проверяет само ограничение в дополнение к уникальному индексу PostgreSQL? Есть ли смысл добавлять unique_constraint
к функции changeset/2
?