Thanks for your response.
I formatted my code as recommended
def changeset(%Passbook{} = passbook, attrs) do
# getSerialStart = Map.get(attrs, "serial_start")
# if getSerialStart do
# {serial_start_number, _} = Integer.parse(Map.get(attrs, "serial_start"))
# else
# serial_start_numer = 0;
# end
passbook = %{serial_start: serial_start} = passbook
|> cast(attrs, [:account_id, :customer_id, :passbook_number, :serial_start, :serial_end, :active])
|> validate_required([:account_id, :customer_id, :passbook_number, :serial_start, :serial_end])
passbook = passbook
|> validate_number(:serial_end, greater_than: serial_start)
# |> validate_number(:serial_end, greater_than: serial_start_number)
|> unique_constraint(:passbook_number, message: "Passbook number already exist.")
end
And i got this error
no match of right hand side value: #Ecto.Changeset<action: nil, changes: %{}, errors: [account_id: {"can't be blank", [validation: :required]}, customer_id: {"can't be blank", [validation: :required]}, passbook_number: {"can't be blank", [validation: :required]}, serial_start: {"can't be blank", [validation: :required]}, serial_end: {"can't be blank", [validation: :required]}], data: #Vokmfi.Clients.Passbook<>, valid?: false>