cod*_*hal 3 elixir ecto phoenix-framework
我最近迁移到最新版本的phoenix和ecto.
现在我已根据ecto changelog更改了模型的代码
defmodule Spaces.Tag do
use Spaces.Web, :model
#Changed to below
defmodule Spaces.Tag do
use Ecto.Schema
Run Code Online (Sandbox Code Playgroud)
我得到了(CompileError) web/models/tag.ex:23: undefined function cast/4.我失踪的东西?
我的mix.exs相关代码
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
Run Code Online (Sandbox Code Playgroud)
您还需要导入某些模块:
import Ecto
import Ecto.Changeset # This is the one that includes cast
import Ecto.Query
Run Code Online (Sandbox Code Playgroud)
在Ecto 1.1中进行了更改,并在http://www.phoenixframework.org/blog/upgrading-from-v10-to-v11#section-ecto-changes中提及
你不应该这样做:
defmodule Spaces.Tag do
use Spaces.Web, :model
#Changed to below
defmodule Spaces.Tag do
use Ecto.Schema
Run Code Online (Sandbox Code Playgroud)
相反,你应该更新web.ex到:
defmodule Spaces.Web do
def model do
quote do
use Ecto.Schema
import Ecto
import Ecto.Changeset
import Ecto.Query
end
end
end
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1061 次 |
| 最近记录: |