I’m scratching my head trying to read this error log from Postgrex.
** (Postgrex.Error) ERROR 42703 (undefined_column) column c2.user_id does not exist
query: SELECT t0."id", t0."logo_url", t0."icon_url", t0."invite_password",
t0."is_company", t0."long_description", t0."name", t0."short_description",
t0."company_id", t0."inserted_at", t0."updated_at",
c1."id" FROM "teams" AS t0 INNER JOIN "cohorts"
AS c1 ON c1."id" = ANY($1) INNER JOIN "cohorts_teams"
AS c2 ON c2."cohort_id" = c1."id" WHERE (c2."user_id" = t0."id") ORDER BY c1."id"
You have a mistake here: many_to_many :teams, Rocketship.Accounts.User, join_through: "cohorts_teams". This should be Rocketship.Accounts.Team probably.
Also, if you use join_through and then a string it won’t use the schema, you need to join_through: [:cohorts_teams, :team]
As a first note, the stuff you’re linking to are quite old, Ecto 3.X has been out for a while.
Secondly, I was a bit wrong now that I looked at it, I got join_through: confused with has_many throughhttps://hexdocs.pm/ecto/Ecto.Schema.html#has_many/3-options. I almost always use an actual schema in the middle and not many_to_many.