defmodule Ash.Error.Framework.ManualActionMissed do @moduledoc "Used when a manual action should have produced a result, but did not" use Ash.Error.Exception def_ash_error([:resource, :action, :type], class: :framework) defimpl Ash.ErrorKind do def id(_), do: Ash.UUID.generate() def code(_), do: "manual_action_missed" def message(%{resource: resource, action: action, type: :create}) do """ Manual action did not produce a result: #{inspect(resource)}.#{action} For manual actions, you must implement an `after_action` inside of a `change` that returns a newly created record. For example: # in the resource create :special_create do manual? true change MyApp.DoCreate end # The change defmodule MyApp.DoCreate do use Ash.Resource.Change def change(changeset, _, _) do Ash.Changeset.after_action(changeset, fn changeset, _result -> # result will be `nil`, because this is a manual action result = do_something_that_creates_the_record(changeset) {:ok, result} end) end end """ end end end