gpt4 book ai didi

elixir - 修复协议(protocol) Ecto.Queryable 未实现错误

转载 作者:行者123 更新时间:2023-12-02 08:15:25 29 4
gpt4 key购买 nike

我刚开始使用 Ecto 和 Elixir,但遇到了一个无法解释的错误。我的代码看起来就像 Ecto 自述文件中的示例。

这是我的 Ecto 模型和查询模块

defmodule Registration do
use Ecto.Model

schema "registrations" do
field :user_id, :string
field :created_at, :datetime, default: Ecto.DateTime.local
field :updated_at, :datetime, default: Ecto.DateTime.local
end
end

defmodule RegistrationQuery do
import Ecto.Query

def by_user(user_id) do
query = from r in Registration,
where: r.user_id == ^user_id,
select: r
Repo.all(query)
end
end

这是我如何调用查询函数

registrations = Repo.all RegistrationQuery.by_user("underwater")

这一切似乎与 Ecto 文档完全一致,我找不到任何其他说明。但我收到以下错误。

protocol Ecto.Queryable not implemented for [%Ensalutilo.Registration{user_id: "underwater"}]

最佳答案

您的 by_user/1 函数已经在调用 Repo.all,因此当您调用 registrations = Repo.all(...)稍后,您将第一个 Repo.all 的结果作为参数传递,这是一个列表,如您在错误消息中看到的那样!

需要明确的是,您收到此错误消息是因为您可以将任何实现 Ecto.Queryable 协议(protocol)的内容传递到 Repo.all。

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

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