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
 |