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