【问题标题】:Undefined method cast after update to Ecto 2.0更新到 Ecto 2.0 后未定义的方法转换
【发布时间】:2016-11-10 21:18:00
【问题描述】:

我最近迁移到了最新版本的 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

【问题讨论】:

    标签: elixir phoenix-framework ecto


    【解决方案1】:

    您还需要导入某些模块:

      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
    

    【讨论】:

    • 我拒绝了这里的编辑,请注意这是正在定义的MyApp.Web 中的model 函数。
    • 我的所有代码都应该在 def 模型中吗?我现在收到undefined function schema。是否有涵盖整个事情的某种教程?
    • 你还需要在Spaces.Tag里面使用`use Spaces.Web, :model` 教程是我上面链接的升级指南。
    • 感谢您的帮助,该指南遵循的版本是什么。phoenixframework.org/docs/overview。我得到的是,到目前为止的文档一直是一流的,这是我第一次陷入混乱
    • 我不确定您对什么感到困惑。您链接的指南供参考/新应用程序使用。升级指南专门针对 phoenix 版本之间的升级。如果您的应用程序无法正常工作,请使用您遇到的错误更新您的问题。
    猜你喜欢
    • 1970-01-01
    • 2019-07-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多