Params v2.0.0-beta.0 Params

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 Map with atom keys

Transforms an Ecto.Changeset into a struct

Functions

changes(ch)

Specs

changes(Ecto.Changeset.t) :: map

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

Recursively traverses and transforms embedded changesets.

data(ch)

Specs

data(Ecto.Changeset.t) :: Struct.t

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"