如何向 Ecto 变更集添加全局错误
How to add a global error to an Ecto Changeset
我想在不特定于字段的 Ecto.Changeset 上设置错误。
在我的例子中,我有一个登录表单,我想设置一个错误,指出电子邮件或密码无效。但是我仍然想在 email
或 password
字段为空时突出显示它们。
在 Rails 中,您可以通过向 errors[:base]
添加一个条目来实现。 Ecto 中有等效项吗?
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")
我想在不特定于字段的 Ecto.Changeset 上设置错误。
在我的例子中,我有一个登录表单,我想设置一个错误,指出电子邮件或密码无效。但是我仍然想在 email
或 password
字段为空时突出显示它们。
在 Rails 中,您可以通过向 errors[:base]
添加一个条目来实现。 Ecto 中有等效项吗?
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")