26 lines
789 B
Elixir
26 lines
789 B
Elixir
defmodule Confient.School.Student do
|
|
use Ecto.Schema
|
|
import Ecto.Changeset
|
|
|
|
schema "students" do
|
|
field :firstname, :string
|
|
field :lastname, :string
|
|
|
|
belongs_to :class, Confient.School.Class
|
|
has_many :students_works, Confient.Student.Work
|
|
|
|
timestamps()
|
|
end
|
|
|
|
@doc false
|
|
def changeset(student, attrs) do
|
|
student
|
|
|> cast(attrs, [:lastname, :firstname, :class_id])
|
|
|> unique_constraint(:students_lastname_firstname_class_id_index, message: "Existe déjà")
|
|
|> assoc_constraint(:class)
|
|
|> update_change(:lastname, fn e -> String.upcase(e) end)
|
|
|> update_change(:firstname, fn e -> String.downcase(e) |> String.capitalize() end)
|
|
|> validate_required([:lastname, :firstname, :class_id], message: "Le champ ne peut être vide")
|
|
end
|
|
end
|