Engineering Blog

Engineering deep-dives from the SlashFeed team — Elixir, Phoenix, and how the product is built.

Enforcing multi-tenancy at the database layer in Ecto

Application-layer tenant scoping fails silently the day you forget a WHERE clause. PostgreSQL composite foreign keys turn a cross-user reference into a constraint violation the database rejects — here is the underdocumented references/2 :with option, the two migration patterns for CASCADE and SET NULL, the MATCH SIMPLE trick for nullable columns, and a test that proves the constraint lives in the DB.