elixir - Ecto.Queryable 未针对用户/凤凰错误实现
问题描述
跟随Programming Phoenix 1.4书。当我使用手动数据库时,该模块运行良好,但是当我尝试切换accounts.ex
文件时(就像书中告诉我的那样),它坏了:
defmodule Rumbl.Accounts do
alias Rumbl.Repo
def get_user(id) do
Repo.get(User, id)
end
def get_user!(id) do
Repo.get!(User, id)
end
def get_user_by(params) do
Repo.get_by(User, params)
end
def list_users do
Repo.all(User)
end
end
这是我更改account.ex
文件时得到的完整错误:
[error] #PID<0.732.0> running RumblWeb.Endpoint (connection #PID<0.731.0>, stream id 1) terminated
Server: localhost:4000 (http)
Request: GET /users
** (exit) an exception was raised:
** (Protocol.UndefinedError) protocol Ecto.Queryable not implemented for User, the given module does not exist. This protocol is implemented for: Atom, BitString, Ecto.Query, Ecto.SubQuery, Tuple
(ecto) lib/ecto/queryable.ex:40: Ecto.Queryable.Atom.to_query/1
(ecto) lib/ecto/repo/queryable.ex:14: Ecto.Repo.Queryable.all/3
(rumbl) lib/rumbl_web/controllers/user_controller.ex:7: RumblWeb.UserController.index/2
(rumbl) lib/rumbl_web/controllers/user_controller.ex:1: RumblWeb.UserController.action/2
(rumbl) lib/rumbl_web/controllers/user_controller.ex:1: RumblWeb.UserController.phoenix_controller_pipeline/2
(rumbl) lib/rumbl_web/endpoint.ex:1: RumblWeb.Endpoint.instrument/4
(phoenix) lib/phoenix/router.ex:275: Phoenix.Router.__call__/1
(rumbl) lib/rumbl_web/endpoint.ex:1: RumblWeb.Endpoint.plug_builder_call/2
(rumbl) lib/plug/debugger.ex:122: RumblWeb.Endpoint."call (overridable 3)"/2
(rumbl) lib/rumbl_web/endpoint.ex:1: RumblWeb.Endpoint.call/2
(phoenix) lib/phoenix/endpoint/cowboy2_handler.ex:34: Phoenix.Endpoint.Cowboy2Handler.init/2
解决方案
未为用户实现 Ecto.Queryable,给定模块不存在。
该错误非常清楚,这意味着您没有调用模块User
(它可能在您的应用程序中Rumbl.User
或Rumbl.Accounts.User
在您的应用程序中)。
假设您确实创建了 ecto schema Rumbl.User
,您应该:
alias
在您使用的模块中:alias Rumbl.User
或使用模块的完全限定名称:
Repo.get(Rumbl.User, id)
推荐阅读
- python - 在 Pandas 中,如何根据 DatafFame 中的列中的值进行分类和分类
- r - 如何使用 geom_contour_filled 制作离散渐变色条?
- python - 如果满足 groupby sum 条件,则 Pandas 追加
- javascript - 调用泛型函数时使 Flow 需要类型
- linux - 使用气候数据运算符进行变量分离
- java - wiremock soapXpath 属性
- r - 使用具有相同 ylimit 的不同轴的 par(new=TRUE) 覆盖函数
- ms-word - 在 Rmarkdown 的 word 文档中添加作者姓名及其所属机构
- python - LMFIT - 创建用于处理电路模型的模型
- javascript - 在我的办公室 javascript 插件自定义函数中无法要求('ffi')