Localize.Inputs.Number.Changeset (Localize.Inputs.Number v0.1.1)

Copy Markdown View Source

Ecto.Changeset helpers for Localize.Inputs.

Only compiled when :ecto is loaded.

schema "products" do
  field :quantity, :integer
  field :rating,   :decimal
end

def changeset(product, attrs) do
  product
  |> Ecto.Changeset.cast(attrs, [:quantity, :rating])
  |> Localize.Inputs.Number.Changeset.validate_number(:quantity, min: 1)
  |> Localize.Inputs.Number.Changeset.validate_number(:rating, min: 0, max: 5, decimals: 1)
end

Summary

Functions

validate_number(changeset, field, options \\ [])

@spec validate_number(Ecto.Changeset.t(), atom(), Keyword.t()) :: Ecto.Changeset.t()

Validates a Decimal / integer field with the rules from Localize.Inputs.Number.Validator.validate_number/2.

Arguments

Options

  • :required — when true, nil is rejected.

  • :min — minimum allowed value.

  • :max — maximum allowed value.

  • :decimals — maximum number of fractional digits.

Returns

  • The changeset, with one error added per failing check.

Examples

iex> changeset = Ecto.Changeset.cast({%{}, %{quantity: :integer}}, %{"quantity" => 5}, [:quantity])
iex> changeset = Localize.Inputs.Number.Changeset.validate_number(changeset, :quantity, min: 1, max: 10)
iex> changeset.valid?
true