Elixir 重构控制器中的案例结构

Elixir 重构控制器中的案例结构,elixir,phoenix-framework,Elixir,Phoenix Framework,我在控制器中有以下代码。显然,它需要重构。但我不知道如何解决它。如何重构它,使所有重复的代码部分消失 case Repo.insert(changeset) do {:ok, social_media_account} -> case social_media_account.provider do "Twitter" -> conn |> put_flash(:info, gettext("A")) |&

我在控制器中有以下代码。显然,它需要重构。但我不知道如何解决它。如何重构它,使所有重复的代码部分消失

case Repo.insert(changeset) do
  {:ok, social_media_account} ->
    case social_media_account.provider do
      "Twitter" ->
        conn
        |> put_flash(:info, gettext("A"))
        |> redirect(to: user_social_media_account_path(conn, :index, conn.assigns[:user]))
      "GitHub" ->
        conn
        |> put_flash(:info, gettext("B"))
        |> redirect(to: user_social_media_account_path(conn, :index, conn.assigns[:user]))
      _ ->
        conn
        |> put_flash(:info, gettext("C"))
        |> redirect(to: user_social_media_account_path(conn, :index, conn.assigns[:user]))
    end
  {:error, changeset} ->
    render(conn, "new.html", changeset: changeset)
end

您可以从
案例
返回一个值,并使用该值:

case Repo.insert(changeset) do
  {:ok, social_media_account} ->
    info = case social_media_account.provider do
      "Twitter" ->
        gettext("A")
      "GitHub" ->
        gettext("B")
      _ ->
        gettext("C")
    end
    conn
    |> put_flash(:info, info)
    |> redirect(to: user_social_media_account_path(conn, :index, conn.assigns[:user]))
  {:error, changeset} ->
    render(conn, "new.html", changeset: changeset)
end

您可以从
案例
返回一个值,并使用该值:

case Repo.insert(changeset) do
  {:ok, social_media_account} ->
    info = case social_media_account.provider do
      "Twitter" ->
        gettext("A")
      "GitHub" ->
        gettext("B")
      _ ->
        gettext("C")
    end
    conn
    |> put_flash(:info, info)
    |> redirect(to: user_social_media_account_path(conn, :index, conn.assigns[:user]))
  {:error, changeset} ->
    render(conn, "new.html", changeset: changeset)
end