# defmodule MyApp.User do # use Ecto.Schema # import Ecto.Changeset # schema "users" do # field(:first_name) # field(:last_name) # field(:email) # field :age, :integer # has_many :addresses, MyApp.Address # end # def asdf() do # params = %{ # addresses: [%{city: "New York", street: "York"}], # email: "john@email.com", # first_name: "John", # last_name: "Doe" # } # changeset(params) # |> Ecto.Changeset.apply_action(:update) # end # def changeset(params \\ %{}) do # %__MODULE__{} # |> cast(params, [:first_name, :last_name, :email, :age]) # |> validate_required([:first_name, :email]) # |> validate_format(:email, ~r/@/) # |> Ecto.Changeset.cast_assoc(:addresses, with: &MyApp.Address.changeset/2) # end # end # defmodule User do # use Parameter.Schema # alias Parameter.Extensions.Changeset # param do # field :first_name, :string, key: "firstName", required: true # field :last_name, :string, key: "lastName" # field :email, :string # has_one :address, Address # end # def load() do # Parameter.load( # User, # %{ # "address" => %{"city" => "New York", "street" => "York"}, # "email" => "john@email.com", # "firstName" => "John", # "lastName" => "Doe" # }, # struct: true # ) # |> case do # {:ok, entity} -> # changeset(entity) # |> Ecto.Changeset.apply_action(:update) # error -> # error # end # end # def changeset(params) do # User # |> Changeset.cast(params) # |> Changeset.cast_assoc(:address, with: &Address.changeset/1) # end # end