如果用户在已使用的用户名或电子邮件中输入实例,如何显示模型验证中的错误。我正在使用的验证确实有效,如果验证阻止它被创建,页面会很好地呈现。但是,如何向用户显示错误。页面上的位置无关紧要。我知道我可以使用: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
答案 0 :(得分:1)
当您尝试保存或创建记录时,会保存验证错误。
您可以使用@user.errors
来获取验证错误并显示它们。您可以在Rails Guide for validations。
这些将使用默认消息,您可以通过更改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"
答案 1 :(得分:0)
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”.
它还可以根据a验证指定属性的值是否唯一 范围参数:
class Person < ActiveRecord::Base
validates_uniqueness_of :user_name, :scope => :account_id
end
修改强>
我误解了这个问题。丹尼尔的回答是对的。 Examples