mirror of
https://github.com/ash-project/ash.git
synced 2024-09-20 05:23:03 +12:00
improvement: add skip_unknown_inputs
for generic actions
This commit is contained in:
parent
a21341d880
commit
d9aebaec1c
1 changed files with 7 additions and 2 deletions
|
@ -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(
|
||||
|
|
Loading…
Reference in a new issue