Params v2.0.4 Params View Source
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
Link to this section Summary
Functions
Transforms an Ecto.Changeset into a struct
Transforms an Ecto.Changeset into a Map with atom keys
Link to this section Functions
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"
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