gpt4 book ai didi

elixir - 更新到 Ecto 2.0 后未定义的方法转换

转载 作者:行者123 更新时间:2023-12-01 09:18:38 26 4
gpt4 key购买 nike

我最近迁移到了最新版本的 phoenix 和 ecto。

现在我已经根据ecto changelog更改了模型的代码

defmodule Spaces.Tag do
use Spaces.Web, :model
#Changed to below
defmodule Spaces.Tag do
use Ecto.Schema

我收到 (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

最佳答案

您还需要导入某些模块:

  import Ecto
import Ecto.Changeset # This is the one that includes cast
import Ecto.Query

这已在 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

您应该将 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

关于elixir - 更新到 Ecto 2.0 后未定义的方法转换,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38264367/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com