0
我正在尝试为基于Guardian软件包的Phoenix创建身份验证系统。几乎所有的东西,例外的是确定,当我创建一个新用户(注册)用户插入两次:插入重复数据
skeleton_dev=# Select * from users;
id | name | email | encrypted_password | password | inserted_at | updated_at
----+------+-----------+--------------------------------------------------------------+----------+---------------------+---------------------
1 | pj | [email protected] | $2b$12$M2WNdw5mJkUzirwbReKT0ux1HgLFcouq.SEOWEz5dDswCWI4i/uoW | | 2015-09-11 09:55:08 | 2015-09-11 09:55:08
2 | pj | [email protected] | $2b$12$zqHStaEXNwpVoyg8StYwT.U3BEOyZDq1tsTIA.cjzlZYsuwzL4e7u | | 2015-09-11 09:55:09 | 2015-09-11 09:55:09
(2 rows)
,我认为这个问题必须在控制器,但我找不到任何奇怪:
def new(conn, _params) do
changeset = User.create_changeset(%User{})
render(conn, "new.html", changeset: changeset)
end
def create(conn, %{"user" => user_params}) do
changeset = User.create_changeset(%User{}, user_params)
if changeset.valid? do
user = Repo.insert(changeset)
conn
|> put_flash(:info, "User created successfully.")
|> Guardian.Plug.sign_in(user, :token, perms: %{ default: Guardian.Permissions.max }) #------ Autenticação ----------
|> redirect(to: user_path(conn, :index)) #------ Autenticação -------------
else
render(conn, "new.html", changeset: changeset)
end
end
这里有什么问题?
这是不可能知道只有该代码段。另外,您应该为数据库中的电子邮件字段添加unique_constraint。你的'create_changeset'函数在做什么? –
谢谢José。我虽然可能是明显的(因为我是一个新人)。因此,我将花更多的时间来尝试找到它并让你知道。 –
对不起。 create_changeset并没有什么特别的...:def create_changeset(model,params \\:empty)做 model |> cast(params,〜w(name email password)) end –