mirror of
https://github.com/fly-apps/live_beats.git
synced 2024-09-26 13:30:10 +00:00
27 lines
605 B
Elixir
27 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
|