Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/57.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ruby/22.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails 来自数据库验证错误_Ruby On Rails_Ruby_Ruby On Rails 3_Sorcery - Fatal编程技术网

Ruby on rails 来自数据库验证错误

Ruby on rails 来自数据库验证错误,ruby-on-rails,ruby,ruby-on-rails-3,sorcery,Ruby On Rails,Ruby,Ruby On Rails 3,Sorcery,如果用户例如在已经使用的用户名或电子邮件中键入实例,如何显示模型验证中的错误。我使用的验证确实有效,如果验证停止创建页面,页面就会很好地呈现。但是,如何向用户显示错误。页面上的位置无关紧要。我知道我可以使用:message=>“用户名/电子邮件已在使用”。但是,我如何使其更具体,如何使错误直接来自验证检查 class User < ActiveRecord::Base authenticates_with_sorcery! attr_accessible :username,

如果用户例如在已经使用的用户名或电子邮件中键入实例,如何显示模型验证中的错误。我使用的验证确实有效,如果验证停止创建页面,页面就会很好地呈现。但是,如何向用户显示错误。页面上的位置无关紧要。我知道我可以使用: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
class用户

它还可以验证指定属性的值是否基于 范围参数:

class Person < ActiveRecord::Base
  validates_uniqueness_of :user_name, :scope => :account_id
end
class-Person:account\u id
结束
编辑


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

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

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

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

一些示例代码:

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

我已经去过那里了,我现在确实注意到了一些新的东西,顺便说一句,他们都有自己的:信息,因此我可以多次使用这些信息。然而,我又一次无法多次传递:message,:message,:message,您打算如何处理此问题?还有什么是范围参数,这到底意味着什么?哦,我误解了这个问题。。Daniel的答案是您想要的,我可以简单地将其添加到视图中吗,或者我必须用如下内容补充UsersController中的创建操作:@user.error您可以将其添加到视图中。如果用户没有错误,它将不呈现任何内容(如果用户是新的,或者您刚刚访问了编辑页面,它将不呈现任何内容),如果您试图保存用户并且验证失败,它将为每个错误消息呈现一个带有消息的div。如果您正在使用表单,您也可以使用
,以及
可笑的错误:会话中的NoMethodError#新我该怎么做,有什么提示吗?你能给出完整的错误信息吗?这些信息不足以提供帮助。
<% @user.errors.full_messages.each do |msg| %>
  <div class="error"><%= msg %></div>
<% end %>
  activerecord:
    errors:
      models:
        user:
          attributes:
            email:
              taken: "has already been taken"