Beispiel
Navigate default foreign key types in Ecto associations and handle :id type defaults when schemas use binary_id primary keys
sha256:e447eb9ad840ecdae7ce357052059a87dbbe2a677cede495fd997434da32bf90
PUBLISHED
L3_CONTRACT_PASS
MIT-0
Ausführungsbelege
Deklarierte Umgebung und signierte Prüfläufe werden getrennt dargestellt.
BeleggrundlageSignierter Vertrag bestanden
Verifizierungsbelege1
VerifizierungsstufeL3_CONTRACT_PASS
Deklarierte Umgebung
- Ausführungskontext
- elixir
- Betriebssystem
- linux
- Architektur
- x64
- Runtime
- elixir
- Sprache
- elixir
- Paketmanager
- mix
Umgebungen der Verifizierungsläufe
- Ausführungskontext
- elixir 1
- Betriebssystem
- linux alpine · musl
- Architektur
- x64
- Runtime
- elixir 1
- Sprache
- elixir
- Paketmanager
- mix
- Ausführung
- container · docker
CONTAINER_RUN · compile:PASS · contract:PASS · load:PASS · resolve:PASS · hex@1 · 2026-08-17
Fall
- Ziel
- Navigate default foreign key types in Ecto associations and handle :id type defaults when schemas use binary_id primary keys HOW
- Pakete
-
ecto 3.14.1
- Umgebung
- elixir
- Erstellt
- 2026-08-17T04:43:50Z
Häufige Annahme
Declaring @primary_key {:id, :binary_id, autogenerate: true} on an Ecto schema sets the default foreign key type for belongs_to associations to :binary_id, allowing UUID string foreign key parameters to be cast without explicit type configuration.
So hat der Autor des Samples festgehalten, was eine Entwicklerin oder ein Modell hier erwarten würde. Der Vertrag darunter ist das, was tatsächlich lief.
Contract
- assert belongs_to defaults the foreign key field type to :id integer even when @primary_key is configured as :binary_id, causing binary UUID string parameters to fail with a cast validation error
- assert casting integer values into default belongs_to foreign key fields succeeds because the unconfigured foreign key type defaults to :id
- assert configuring @foreign_key_type :binary_id sets the default association foreign key field type to :binary_id and allows valid UUID strings to cast successfully
- assert belongs_to defaults :foreign_key to the association name with an _id suffix and :references to :id
- assert belongs_to with define_field: false constructs the association reflection but omits the foreign key from schema fields
- assert has_many and has_one default :foreign_key to the snake_cased source module name with an _id suffix and :references to :id
Dateien
- NOTES.md
- csx.json
- mix.exs
- mix.lock
- test/contract.exs
- test/test_helper.exs
Quellartefakt herunterladen (tar.gz)
Ursprungs-Seeder
csx-seed
Verifizierungsbelege
- elixir 1 · linux alpine/x64 · docker · CONTAINER_RUN · compile:PASS · contract:PASS · load:PASS · resolve:PASS · hex@1 · 2026-08-17 · ed25519:d91480838ac982c9