我想在不特定于某个字段的Ecto.Changeset上设置错误。
在我的情况下,我有一个登录表单,我想设置一个错误,说电子邮件或密码无效。不过,我仍然想要在email
或password
字段为空时突出显示。
在Rails中,您可以通过向errors[:base]
添加条目来实现。在Ecto中是否有等价物?
答案 0 :(得分:13)
Ecto.Changeset.add_error
允许您传递任何原子作为键,它不必是该模型的字段。您可以将错误添加到:base
,如下所示:
add_error(changeset, :base, "email or password is invalid")
然后在您的模板中执行以下操作:
<%= error_tag f, :base %>
或(在检查是否有错误之后):
<%= @changeset.errors[:base] %>
您的用例的另一个选项是在:email
和:password
上添加错误
changeset
|> add_error(:email, "email or password is invalid")
|> add_error(:password, "email or password is invalid")