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