Elixir 长生不老药;Phoenix-GET/users/new时出现ArgumentError
我试图在Elixir上用Phoenix web框架实现用户身份验证,但被这个错误难住了 如果在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
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你完全正确!非常感谢。当然,很高兴能帮上忙:)