Reputation: 9079
I recently migrated to latest versions of phoenix and ecto.
Now I have changed code of a model, according to ecto changelog to
defmodule Spaces.Tag do
use Spaces.Web, :model
#Changed to below
defmodule Spaces.Tag do
use Ecto.Schema
I am getting (CompileError) web/models/tag.ex:23: undefined function cast/4.
Anything I am missing?
My mix.exs relevant code
defp deps do
[{:phoenix, "~> 1.2"},
{:postgrex, ">= 0.0.0"},
{:phoenix_ecto, "~> 3.0"},
{:phoenix_html, "~> 2.6"},
{:phoenix_live_reload, "~> 1.0", only: :dev},
{:gettext, "~> 0.9"},
{:cowboy, "~> 1.0"},
{:httpoison, "~> 0.8.0"},
{:jsx, "~> 2.8"},
{:scrivener_ecto, "~> 1.0"},
{:phoenix_html_simplified_helpers, "~> 0.4.0"},
{:ex_doc, "~> 0.12.0", only: [:dev]}
]
end
Upvotes: 3
Views: 1552
Reputation: 84140
You also need to import certain modules:
import Ecto
import Ecto.Changeset # This is the one that includes cast
import Ecto.Query
This was changed in Ecto 1.1 and was mentioned in http://www.phoenixframework.org/blog/upgrading-from-v10-to-v11#section-ecto-changes
You shouldn't need to do:
defmodule Spaces.Tag do
use Spaces.Web, :model
#Changed to below
defmodule Spaces.Tag do
use Ecto.Schema
Instead you should update web.ex
to:
defmodule Spaces.Web do
def model do
quote do
use Ecto.Schema
import Ecto
import Ecto.Changeset
import Ecto.Query
end
end
end
Upvotes: 8