mirror of
https://github.com/fly-apps/live_beats.git
synced 2024-06-12 18:39:22 +00:00
27 lines
604 B
Elixir
27 lines
604 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
|