I have a small problem, could help me ?
I created a registration form, where the user fills in and are inserted in 2 different tables, using ecto.multi.insert …
So far so good, everything working perfectly …
The problem I’m experiencing is …
Changetset validations are not working,
can you help me?
Any would be the best way to make this work?
Below is the code.
Controller
def create(conn, %{"teste" => teste_params}) do
current_user = Pow.Plug.current_user(conn)
dbhost_page = Map.get(teste_params, "column1")
dbname_page = Map.get(teste_params, "column2")
dbpasswd_page = Map.get(teste_params, "column3")
languagecode_page = Map.get(teste_params, "column4")
name_page = Map.get(teste_params, "column5")
status_page = Map.get(teste_params, "column6")
id_page = Map.get(teste_params, "column7")
multi = Multi.new()
|> Multi.insert(:database, %Database{column1: dbhost_page, column2: dbname_page, column3: dbpasswd_page, column4: column1})
|> Multi.insert(:website, %Website{column5: name_page, column6: languagecode_page, column7: status_page, column8: id_page, user_id: current_user.id})
# require IEx;IEx.pry
case Repo.transaction(multi) do
{:ok, teste} ->
conn
|> put_flash(:info, "criado com sucesso!")
|> redirect(to: "/testes")
{:error, changeset} ->
render(conn, "new.html", changeset: changeset)
end
end
Changeset 1 (database)
def changeset(database, attrs) do
database
|> cast(attrs, [:column1, :column2, :column3, :column4])
|> validate_required([:column1, :column2, :column3, :column4])
end
Changeset 2 (teste)
def changeset(teste, attrs) do
teste
|> cast(attrs, [:column5, :column6, :column6, :column7, :column8, :column9])
|> validate_required([:column5, :column6])
|> unique_constraint(:column5, message: "Nome do Projeto já existe")
end
How do I run these validations with Ecto.Multi?
can you help me?