gpt4 book ai didi

elixir - (UndefinedFunctionError) 模型中未定义的函数更改/2

转载 作者:行者123 更新时间:2023-12-03 09:16:50 24 4
gpt4 key购买 nike

我使用 iex -S mix 运行一些代码

这样就可以了:

user = Repo.get User, 1

Ecto.Changeset.change user, %{name: "xxxx"}

但这是错误的:

User.change user, %{name: "xxxx"}

引发(UndefinedFunctionError)未定义函数Rumbl.User.change/2

我注意到文件 web.ex 的函数模型中有 import Ecto.Changeset

def model do
quote do
use Ecto.Schema

import Ecto
import Ecto.Changeset
import Ecto.Query, only: [from: 1, from: 2]
end
end

所以我认为 User.change/2 应该与 Ecto.Changeset.change/2 一样工作,对吗?

最佳答案

我认为您可能误解了 import 的工作原理。

来自the docs :

Imports functions and macros from other modules.

import allows one to easily access functions or macros from others modules without using the qualified name.

这意味着您不必在模块内部使用 Ecto.Changeset.change(user, %{} ,您可以改为 change(user, % {})

此更改仅将函数导入到正在使用的模块中。它不会将它们定义为导入模型上的函数。

如果您在 iex 中并且不想键入完全限定的函数名称,您可以执行以下操作:

alias Ecto.Changeset
Changeset.change(user, %{})

或者:

import Ecto.Changeset
change(user, %{})

关于elixir - (UndefinedFunctionError) 模型中未定义的函数更改/2,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36554314/

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