Skip to content

Instantly share code, notes, and snippets.

@stevedomin
Last active February 21, 2016 19:59
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save stevedomin/76163f570220c9bacdb9 to your computer and use it in GitHub Desktop.
Save stevedomin/76163f570220c9bacdb9 to your computer and use it in GitHub Desktop.
empty changeset with Ecto 2.0
#
# pre ecto 2.0
#
# web/models/user.ex
defmodule User do
schema "users" do
field :name
field :email
end
def changeset(user, params \\ :empty) do
user
|> cast(params, [:name, :email])
end
end
# web/controllers/user_controller.ex
defmodule UserController do
def new(conn, _params) do
changeset = User.changeset(%User{})
render(conn, "new.html", changeset: changeset)
end
end
#
# post ecto 2.0
#
# web/models/user.ex
defmodule User do
schema "users" do
field :name
field :email
end
def changeset(user, params \\ :invalid) do
user
|> cast(params, [:name, :email])
|> validate_required([:name, :email])
end
end
# web/controllers/user_controller.ex
defmodule UserController do
def new(conn, _params) do
# option 1 - use Ecto.Changeset.change/
changeset = Ecto.Changeset.change(%User{})
# option 2 - special `empty_changeset/2` function in user.ex
changeset = User.empty_changeset()
render(conn, "new.html", changeset: changeset)
end
end
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment