Slide 27
Slide 27 text
τϥϯβΫγϣϯ
(Ecto.Multi)
# controllers/admin/user_controller.ex
defmodule MediaSample.Admin.UserController do
…
def create(conn, %{"user" => user_params}, locale) do
changeset = User.changeset(%User{}, user_params)
case Repo.transaction(UserService.insert(conn, changeset, user_params, locale)) do
{:ok, %{user: user, upload: _file}} ->
conn
|> put_flash(:info, gettext("%{name} created successfully.", name: gettext("User")))
|> redirect(to: admin_user_path(conn, :show, locale, user)) |> halt
# Τϥʔͷൃੜͨ͠ΦϖϨʔγϣϯʹΑͬͯfailed_valueʹฦ͞ΕΔσʔλͷܕ͕ҟͳΔͷͰऔΓѻ͍͕গʑ໘ɻ
{:error, _failed_operation, failed_value, _changes_so_far} ->
conn
|> put_flash(:error, gettext("%{name} create failed.", name: gettext("User")))
|> render("new.html", changeset: extract_changeset(failed_value, changeset))
end
end
end