try this:
def create_recording(attrs \\ %{}) do
Ecto.Multi.new()
|> Ecto.Multi.insert(:recording, Recording.changeset(%Recording{}, attrs))
|> Ecto.Multi.update(:recording_with_audio, &Recording.audio_changeset(&1.recording, attrs))
|> Repo.transaction()
|> case do
{:ok, %{recording_with_audio: recording}} -> {:ok, recording}
{:error, _operation, changeset, _} -> Ecto.Changeset.apply_action(changeset, :insert)
end
end






















