live_beats/lib/live_beats/media_library/genre.ex
Chris McCord 6b02cfc614 Touchup
2022-08-03 09:40:48 -04:00

28 lines
605 B
Elixir

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
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