An equivalent to Rails' after_save in Phoenix

I guess this example illustrates the usage:

user_changeset = User.changeset(%User{}, user_params)multi =
  Multi.new
  |> Multi.insert(:user, user_changeset)
  |> Multi.run(:address, fn %{user: user} ->
    address_changeset = 
      %Address{user_id: user.id}
      |> Address.changeset(address_params)
    Repo.insert(address_changeset)
  end)case Repo.transaction(multi) do
  {:ok, result} ->
    {:ok, jwt, _full_claims} = 
      Guardian.encode_and_sign(result.user, :token)    conn
    |> put_status(:created)
    |> render(MyApp.SessionView, "create.json", jwt: jwt, user: result.user)  {:error, :user, changeset, %{}} ->
    conn
    |> put_status(:unprocessable_entity)
    |> render(MyApp.RegView, "error.json", changeset: changeset)  {:error, :address, changeset, %{}} ->
    conn
    |> put_status(:unprocessable_entity)
    |> render(MyApp.RegView, "error.json", changeset: changeset)
end