live_beats/lib/live_beats/media_library/genre.ex

28 lines
605 B
Elixir
Raw Normal View History

2021-10-29 16:12:23 +00:00
defmodule LiveBeats.MediaLibrary.Genre do
use Ecto.Schema
import Ecto.Changeset
schema "genres" do
field :title, :string
field :slug, :string
end
@doc false
def changeset(song, attrs) do
song
|> cast(attrs, [:title])
|> validate_required([:title])
|> put_slug()
end
defp put_slug(%Ecto.Changeset{valid?: false} = changeset), do: changeset
2022-08-03 13:40:11 +00:00
2021-10-29 16:12:23 +00:00
defp put_slug(%Ecto.Changeset{valid?: true} = changeset) do
if title = get_change(changeset, :title) do
put_change(changeset, :slug, Phoenix.Naming.underscore(title))
else
changeset
end
end
end