How do you model different ‘types’ with totally different fields in Ecto?

No doubt that Ash is more then an ORM, the reason why I mentioned Ash was mostly due to the work around automated migration which Ecto is lacking.

The biggest issues I find with traditional ORMs and DSLs in general is lack of precision. I believe that the abstraction is done at the wrong level, which ends up causing more complexity and issues overtime, as the abstraction leaks.