Skip to content

Instantly share code, notes, and snippets.

@hryniuk
Forked from stevedomin/create_post.exs
Created February 7, 2021 13:25
Show Gist options
  • Save hryniuk/818e6e8ceea6b343e2fda534dd16364e to your computer and use it in GitHub Desktop.
Save hryniuk/818e6e8ceea6b343e2fda534dd16364e to your computer and use it in GitHub Desktop.
Using UUIDs as primary key with Ecto
defmodule MyBlog.Repo.Migrations.CreatePost do
use Ecto.Migration
def change do
create table(:posts, primary_key: false) do
add :id, :uuid, primary_key: true
add :body, :string
add :word_count, :integer
timestamps
end
end
end
defmodule MyBlog.Post do
use MyBlog.Web, :model
@primary_key {:id, :binary_id, autogenerate: true}
schema "posts" do
field :body, :string
field :word_count, :integer
timestamps
end
@required_fields ~w(body word_count)
@optional_fields ~w()
@doc """
Creates a changeset based on the `model` and `params`.
If `params` are nil, an invalid changeset is returned
with no validation performed.
"""
def changeset(model, params \\ nil) do
model
|> cast(params, @required_fields, @optional_fields)
end
end
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment