It’s a bit confusing at first, yes, and may tie into this thread a bit. I believe the protocol implementation is optimized for debugging over learning. Inspecting changesets is a very common debugging occurrence and having the params always present would be incredibly noisy. When I want to inspect the params, I’m always doing so in the controller/liveview. So in that regard it’s a very sound decision!
If you want to override inspect protocol you can use: IO.inspect(some_struct, structs: false) which will print their underlying raw map with all keys.






















