View Source Params (Params v2.3.0)

Functions for processing params and transforming their changesets.

use Params provides a defparams macro, allowing you to define functions that process parameters according to some schema.

Example

defmodule MyApp.SessionController do
  use Params

  defparams login_params(%{email!: :string, :password!: :string})

  def create(conn, params) do
    case login_params(params) do
      %Ecto.Changeset{valid?: true} = ch ->
        login = Params.data(ch)
        User.authenticate(login.email, login.password)
        # ...
      _ -> text(conn, "Invalid parameters")
    end
  end
end

Summary

Functions

Transforms an Ecto.Changeset into a struct.

Transforms an Ecto.Changeset into a Map with atom keys.

Functions

@spec data(Ecto.Changeset.t()) :: struct()

Transforms an Ecto.Changeset into a struct.

Recursively traverses and transforms embedded changesets.

For example if the LoginParams module was defined like:

defmodule LoginParams do
   use Params.Schema, %{login!: :string, password!: :string}
end

You can transform the changeset returned by from into an struct like:

data = LoginParams.from(%{"login" => "foo"}) |> Params.data
data.login # => "foo"
@spec to_map(Ecto.Changeset.t()) :: map()

Transforms an Ecto.Changeset into a Map with atom keys.

Recursively traverses and transforms embedded changesets and skips keys that was not part of params given to changeset