Your Ecto schema doesn’t have to track 1:1 with the table columns, if you have a column that is not defined in Ecto it should ignore it. So the order should be to first run the schema migration to add phone_num, ensure the db and app are still happy, then commit and deploy the code that uses the new column.
You do have to understand how your specific database version handles the type of migration you want to do. For example in postgres < v11 if you add a column with a default value it will lock the entire table while it runs the transaction and if you’re changing a very large table in production your app may become unstable for a few minutes while the operation completes. In that case you’d have to split into a number of steps that prevent full locks, or at least makes them run as quickly as possible.