improvement: add skip_unknown_inputs for generic actions

This commit is contained in:
Zach Daniel 2024-04-03 07:28:19 -04:00
parent a21341d880
commit d9aebaec1c

View file

@ -67,7 +67,7 @@ defmodule Ash.ActionInput do
{input, _opts} = Ash.Actions.Helpers.set_context_and_get_opts(input.domain, input, opts)
input
|> cast_params(params)
|> cast_params(params, opts)
|> require_arguments()
end
@ -177,12 +177,14 @@ defmodule Ash.ActionInput do
%{input | context: Ash.Helpers.deep_merge_maps(input.context, map)}
end
defp cast_params(input, params) do
defp cast_params(input, params, opts) do
input = %{
input
| params: Map.merge(input.params, Enum.into(params, %{}))
}
skip_unknown_inputs = opts[:skip_unknown_inputs] || []
Enum.reduce(params, input, fn {name, value}, input ->
cond do
has_argument?(input.action, name) ->
@ -191,6 +193,9 @@ defmodule Ash.ActionInput do
match?("_" <> _, name) ->
input
name in skip_unknown_inputs ->
input
true ->
error =
Ash.Error.Invalid.NoSuchInput.exception(