Skip to content

Instantly share code, notes, and snippets.

@mchavezi
Created July 2, 2020 03:12
Show Gist options
  • Select an option

  • Save mchavezi/f63cdcfbc54b2c6c5e60d8886e8e81b2 to your computer and use it in GitHub Desktop.

Select an option

Save mchavezi/f63cdcfbc54b2c6c5e60d8886e8e81b2 to your computer and use it in GitHub Desktop.
defmodule MyApp.Registration do
@moduledoc """
The Registration context.
"""
alias Ecto.Multi
alias MyApp.Repo
alias MyApp.Subdomain.Accounts
alias MyApp.Orgs
alias MyApp.Accounts.User
alias MyApp.Orgs.Org
def create(params) do
multi = Multi.new()
|> Multi.insert(:org, Org.registration_changeset(%Org{}, params))
|> Multi.run(:user, fn _repo, %{org: org} ->
multi = Multi.new()
|> Multi.insert(:user, User.registration_changeset(%User{}, params))
|> IO.inspect
Repo.transaction(multi)
|> case do
{:ok, %{user: user}} -> {:ok, user}
{:error, :user, %Ecto.Changeset{} = changeset, _changes} -> {:error, changeset}
end
|> IO.inspect
end)
Repo.transaction(multi)
|> case do
{:ok, user} -> {:ok, user}
{:error, :org, %Ecto.Changeset{} = changeset, _changes} -> {:error, changeset}
{:error, :user, %Ecto.Changeset{} = changeset, _changes} -> {:error, changeset}
end
end
end
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment