Use Repo.transact instead of Ecto.Multi
Running mix ecto.dump
creates a structure.sql file in ./priv/repo.
This is easy to forget to keep updated, so one easy way is to add this in the aliases()
function in mix.exs:
"db.migrate": ["ecto.migrate", "ecto.dump"]
"db.rollback": ["ecto.rollback", "ecto.dump"]
How to get a random number in Elixir.
iex(1)> :rand.uniform(6)
iex(2)> Enum.random(1..6)
Sometimes you need a unique integer, and of course Elixir has you covered. This is very useful for Factories if you want to implement something like sequences to avoid errors due to database unique constraints.
iex(1)> System.unique_integer(~w[monotonic positive]a)
1
iex(2)> System.unique_integer(~w[monotonic positive]a)
2
iex(3)> System.unique_integer(~w[monotonic positive]a)
3