Skip to content

Commit

Permalink
Add unique email constraint for users. Part of #101
Browse files Browse the repository at this point in the history
  • Loading branch information
Ary Borenszweig committed Oct 14, 2016
1 parent 88f45e9 commit 392fed6
Show file tree
Hide file tree
Showing 3 changed files with 14 additions and 1 deletion.
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
defmodule Ask.Repo.Migrations.AddUniqueEmailIndexToUsers do
use Ecto.Migration

def change do
create unique_index(:users, [:email])
end
end
7 changes: 6 additions & 1 deletion test/models/user_test.exs
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
defmodule Ask.UserTest do
use Ask.ModelCase

alias Ask.User
alias Ask.{User, Repo}

@valid_attrs %{email: "some@content", encrypted_password: "some content"}
@invalid_email %{email: "some content", encrypted_password: "some content"}
Expand All @@ -21,4 +21,9 @@ defmodule Ask.UserTest do
changeset = User.changeset(%User{}, @invalid_email)
refute changeset.valid?
end

test "can't create two users with same email" do
User.changeset(%User{}, @valid_attrs) |> Repo.insert!
{:error, _} = User.changeset(%User{}, @valid_attrs) |> Repo.insert
end
end
1 change: 1 addition & 0 deletions web/models/user.ex
Original file line number Diff line number Diff line change
Expand Up @@ -19,6 +19,7 @@ defmodule Ask.User do
struct
|> cast(params, [:email, :encrypted_password])
|> validate_required([:email, :encrypted_password])
|> unique_constraint(:email)
|> validate_format(:email, ~r/@/)
end
end

0 comments on commit 392fed6

Please sign in to comment.