Ruby on rails 在obj.errors.full_消息中出现两次电子邮件验证错误(Rails 3.2,Desive,RSpec)

Ruby on rails 在obj.errors.full_消息中出现两次电子邮件验证错误(Rails 3.2,Desive,RSpec),ruby-on-rails,ruby,testing,rspec,devise,Ruby On Rails,Ruby,Testing,Rspec,Devise,我正在为我的用户模型编写简单的模型测试。其中一个检查是否存在:email属性: it "is invalid without an email" do expect(user = User.new(email: nil)).to have(1).errors_on(:email) end 出于某种原因,此测试失败,因为错误哈希包含“电子邮件不能为空”两次: 当我在控制台中使用nil电子邮件创建用户并调用User.errors.full_messages时,我得到以下信息:

我正在为我的用户模型编写简单的模型测试。其中一个检查是否存在
:email
属性:

  it "is invalid without an email" do 
    expect(user = User.new(email: nil)).to have(1).errors_on(:email)
  end
出于某种原因,此测试失败,因为错误哈希包含“电子邮件不能为空”两次:

当我在控制台中使用
nil
电子邮件创建用户并调用
User.errors.full_messages
时,我得到以下信息:

 @messages=
  {:email=>["can't be blank", "can't be blank"]
这就是我的验证在
user.rb中的样子:

validates_presence_of :email
奇怪的是,如果我从
user.rb
中删除上面的代码,测试现在就通过了,并且我在错误哈希中只得到一次错误


这是怎么回事?我应该注意到,我的用户模型是通过Desive generator创建的。Desive是否已包含对
:电子邮件的验证?

是。你的假设是正确的。Desive有自己的电子邮件验证,不能为空。您可以删除您的电子邮件验证。

是。你的假设是正确的。Desive有自己的电子邮件验证,不能为空。您可以删除您的电子邮件验证。

是。你的假设是正确的。Desive有自己的电子邮件验证,不能为空。您可以删除您的电子邮件验证。

是。你的假设是正确的。Desive有自己的电子邮件验证,不能为空。您可以删除您的电子邮件验证

validates_presence_of :email