Create Schemas
Explore how to create schemas using Ecto to map Elixir structs to database tables effectively. Learn to define fields with proper data types, handle default primary key behavior, and use timestamps for automatic record tracking.
We'll cover the following...
Let’s look at the DSL Ecto provides to create schemas. We’ll use the DSL to specify the fields we want to map and their data types.
Map schema fields
Let’s start with our tracks table. We’ll have just five fields for now:
-
id, a unique ID for our track. -
title, a string representing the track’s title. -
duration, the length of the track in seconds. -
index, a number representing the track’s position in an album. -
number_of_plays, a counter that we increment every time we play the track.
If we’re writing an Elixir application that doesn’t use Ecto, we would most likely create a %Track{} struct to hold this data. We need to open a file named track.ex and add something like this:
With Ecto, the process is similar. Rather than defstruct, we’ll use the schema macro, and rather than a list of atoms, we’ll provide fields. With these changes, our code will look like this:
What do we do?
This defines a new %Track{} ...