gpt4 book ai didi

elixir - 协议(protocol) Ecto.Queryable 未实现

转载 作者:行者123 更新时间:2023-12-04 04:10:23 25 4
gpt4 key购买 nike

我正在尝试在我的 API 中实现 Guardian 并通过它执行登录以获取 JWT。我正在看的教程是here .问题是使用类似于他们在示例中使用的用户模型来实现登录。模型代码如下所示:

defmodule PushflightServer.User do
use PushflightServer.Web, :model

use Ecto.Repo
import Ecto.Query
alias PushflightServer.Repo

schema "users" do
field :name, :string
field :email, :string
field :encrypted_password, :string
field :password, :string, virtual: true
field :verify_token, :string
field :verify_date, Ecto.DateTime

timestamps
end

def from_email(nil), do: { :error, :not_found }
def from_email(email) do
IO.write("Before email")
IO.inspect(email)
Repo.one(User, email: email)
end

如果我从 Phoenix 内部或直接在 中调用 from_email iex -S 混合 ,我收到以下错误:

用户 = PushflightServer.User.from_email("rob@json.com")

** (Protocol.UndefinedError) protocol Ecto.Queryable not implemented for User, the given module does not exist (ecto) lib/ecto/queryable.ex:33: Ecto.Queryable.Atom.to_query/1 (ecto) lib/ecto/repo/queryable.ex:90: Ecto.Repo.Queryable.execute/5 (ecto) lib/ecto/repo/queryable.ex:15: Ecto.Repo.Queryable.all/4 (ecto) lib/ecto/repo/queryable.ex:44: Ecto.Repo.Queryable.one/4



我一定遗漏了一些简单的东西,但我找不到任何关于为什么会发生这种情况的文档。使用 Repo 插入数据工作正常。有任何想法吗?

最佳答案

您需要完全命名空间 UserPushflightServer.User或者您可以使用快捷方式 __MODULE__

关于elixir - 协议(protocol) Ecto.Queryable 未实现,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35762964/

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