Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/elixir/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Elixir 长生不老药;Phoenix-GET/users/new时出现ArgumentError_Elixir_Phoenix Framework_Ecto - Fatal编程技术网

Elixir 长生不老药;Phoenix-GET/users/new时出现ArgumentError

Elixir 长生不老药;Phoenix-GET/users/new时出现ArgumentError,elixir,phoenix-framework,ecto,Elixir,Phoenix Framework,Ecto,我试图在Elixir上用Phoenix web框架实现用户身份验证,但被这个错误难住了 如果在iex中运行changeset=Blog.User.changeset(%Blog.User{}) ** (ArgumentError) unknown field "email" for changeset on %Blog.User{__meta__: #Ecto.Schema.Metadata<:built, "users">, email: nil, id: nil, inser

我试图在Elixir上用Phoenix web框架实现用户身份验证,但被这个错误难住了

如果在
iex
中运行
changeset=Blog.User.changeset(%Blog.User{})

** (ArgumentError) unknown field "email" for changeset on 
%Blog.User{__meta__: #Ecto.Schema.Metadata<:built, "users">, email: 
nil, id: nil, inserted_at: nil, is_admin: false, name: nil, password:
nil, password_hash: nil, posts: #Ecto.Association.NotLoaded<association 
:posts is not loaded>, updated_at: nil}
  (ecto) lib/ecto/changeset.ex:1318: Ecto.Changeset.ensure_field_exists!/2
  (ecto) lib/ecto/changeset.ex:1305: anonymous fn/5 in Ecto.Changeset.validate_required/3
  (elixir) lib/enum.ex:1755: Enum."-reduce/3-lists^foldl/2-0-"/3
  (ecto) lib/ecto/changeset.ex:1304: Ecto.Changeset.validate_required/3
将键转换为原子,因此对于cast,您可以使用字符串,但必须将键作为原子处理,因此您的
@required_字段
应该是原子列表

顺便说一下,应该有sigil
~a

将键转换为原子,因此对于cast,您可以使用字符串,但必须将键作为原子处理,因此您的
@必填字段应为原子列表


顺便说一句,应该有一个sigil
~a

只要根据JustMichael和PatNowak的回答/评论,使用

@required_fields ~w(some fields)a
而不是

@required_fields ~w(some fields)

结果生成一个原子列表,该列表是
验证所需的
所需的,并且似乎仍然与
cast
一起工作,只是为了根据JustMichael和PatNowak的回答/评论,使用

@required_fields ~w(some fields)a
而不是

@required_fields ~w(some fields)

生成一个原子列表,该列表
验证所需的
所需的,而且似乎仍然可以使用
cast

这只是一个粗略的猜测,但是
@required\u fields
@optional\u fields
是字符串列表,可能
cast
validate\u required
需要一个原子列表。@JustMichael你绝对正确!非常感谢。当然,很高兴能帮上忙:)这只是一个猜测,但是
@必填字段
@可选字段
是字符串列表,可能
强制转换
验证
需要一个原子列表。@JustMichael你完全正确!非常感谢。当然,很高兴能帮上忙:)