0

如果用户例如输入已使用的用户名或电子邮件,如何显示模型验证中的错误。我正在使用的验证确实有效,如果验证阻止它被创建,页面会很好地呈现。但是,我如何向用户显示错误。页面上的位置无关紧要。我知道我可以使用 :message => “用户名/电子邮件已在使用中”。但是我如何使它更具体,如何使错误直接来自验证检查。

class User < ActiveRecord::Base
  authenticates_with_sorcery! 

  attr_accessible :username, :password, :email

  validates_presence_of :email
  validates_presence_of :password
  validates_presence_of :username
  validates_uniqueness_of :email
  validates_uniqueness_of :username
  validates_uniqueness_of :password
  validates_confirmation_of :password

end
4

2 回答 2

1

当您尝试保存或创建记录时,验证错误将被保存。

您可以使用@user.errors来获取验证错误并显示它们。您可以在Rails 指南中查看验证的一些详细信息。

这些将使用默认消息,您可以通过更改来改进config/locales/en.yml

一些示例代码:

<% @user.errors.full_messages.each do |msg| %>
  <div class="error"><%= msg %></div>
<% end %>

例如,如果您想自定义电子邮件的验证消息,请打开config/locales/en.yml并添加以下内容en:

  activerecord:
    errors:
      models:
        user:
          attributes:
            email:
              taken: "has already been taken"
于 2013-01-23T18:44:21.753 回答
0

validates_uniqueness_of

Validates whether the value of the specified attributes are unique across the system. 
Useful for making sure that only one user can be named “davidhh”.

它还可以根据范围参数验证指定属性的值是否唯一:

class Person < ActiveRecord::Base
  validates_uniqueness_of :user_name, :scope => :account_id
end

编辑

我误读了这个问题。丹尼尔的回答是对的。例子

于 2013-01-23T18:40:42.237 回答