Warning: I am a novice at Elixir, Phoenix, and Ecto. I'll update this post as I am corrected. Note also that this applies to Phoenix 1.2.0 and Ecto 2.0.2.
Updated: July 11. There is no need for a join table model. See also this post from OvermindDL1.
Phoenix and Ecto have recently (I gather) gotten explicit support for many-to-many associations (via join tables). I found that making them work was uncharacteristically hard, hence this blog post.
Note: my job was probably made harder because I didn't want to make the join table a first class model