escargot33
AshEvents: No such input `id` for action; How to handle auto-generated primary keys?
I am currently trying to enable event tracking for one of my resources. As such, it contains the following event DSL:
defmodule MyApp.MyResource do
events do
event_log MyApp.MyEventLog
end
attributes do
uuid_primary_key :id
attribute :field1, ...
attribute :field2, ...
end
actions do
create :create do
accept [:field1, :field2]
argument :xyz, ...
end
end
end
The event tracking works correctly and I can see the events being populated in my event log with both data and changed_attributes being set correctly for each call of the :create action. The auto-generated UUID is recorded in changed_attributes as expected.
When I then try to replay the events as follows:
MyApp.MyEventLog |> Ash.ActionInput.for_action(:replay, %{}) |> Ash.run_action!()
I get this error:
** (Ash.Error.Invalid)
Bread Crumbs:
> Error returned from: MyApp.MyResource.create
Invalid Error
* No such input `id` for action MyApp.MyResource.create
The attribute exists on MyApp.MyResource, but is not accepted by MyApp.MyResource.create
The attribute is currently `writable?: false`, which means that it can never be accepted by an action.
Valid Inputs:
* :field1
* :field2
* ...
This left me very confused and unsure of how to proceed. The AshEvents documentation explicitly says that auto-genered UUIDs are recorded, and I can see that they are. As far as I understand, the default :force_change strategy for all actions shouldn’t require the field to be listed in accept. Furthermore, the examples on the Alembic blog also use resources with auto-generated UUIDs and do not explicitly accept id.
What changes do I have to make in order to get replay working?
Most Liked
Torkan
Hi, AshEvents maintainer here!
I will start working on a fix for this ![]()
As a temporary measure in the meantime, try making these changes:
uuid_primary_key :id, writable?: true- Add
:idto the action’s accept list
Popular in Questions
Other popular topics
Latest Ash Threads
Categories:
Sub Categories:
Forums
Popular Tags
- #ecto
- #liveview
- #troubleshooting
- #learning-elixir
- #deployment
- #library
- #erlang
- #testing
- #genserver
- #mix
- #absinthe
- #remote-other
- #otp
- #plug
- #how-to-question
- #macros
- #postgres
- #channels
- #elixirconf
- #exunit
- #discussion
- #code-sync
- #javascript
- #podcasts
- #onsite
- #dialyzer
- #docker
- #authentication
- #umbrella
- #full-time-contract
- #podcasts-by-brainlid
- #ecto-query
- #elixir-ls
- #phoenix_html
- #iex
- #blog-post
- #graphql
- #genstage
- #ai
- #websockets
- #supervisor
- #elixirconf-us
- #advent-of-code
- #distillery
- #processes
- #forms
- #api
- #metaprogramming
- #hex
- #security









