1
A
回答
2
should allow_value(" ").for(:email)
should allow_value(nil).for(:email)
-3
也许
should validate_uniqueness_of(:email, :allow_blank => true)
+0
不,那不行。 – Pablo 2010-09-24 19:44:28
2
我已经想通了! validate_uniqueness_of依赖于当前正在数据库第一条记录上测试的属性的值。因此,如果数据库中的第一条记录恰好为空,或者该属性为nul,则测试将始终发出如下错误:“Failure/Error:it {should validate_uniqueness_of(:customer_number).case_insensitive.scoped_to(:user_id)}当customer_number被设置为零,没有错误时,预期的错误包括“已经被采用”。
那么我们如何解决这个问题呢?确保删除所有现有记录,并且第一条记录包含属性的填充值。
型号:
validates_uniqueness_of :customer_number, :scope => :user_id, :case_sensitive => false, :allow_blank => true, :allow_nil => true
型号规格:
describe 'Validation' do
it { should allow_value('').for(:customer_number) }
describe 'When a user exists with the same customer_number and user' do
before(:each) do
Customer.destroy_all
# Saving a single customer to validate uniqueness.
@existing = Factory(:customer, :customer_number => 'test') # If you leave customer_number blank here the matcher will check if it can save a new record with a blank customer_number which is possible since we allow blanks. So make sure your first record has a filled in value!!
end
subject do
Factory.build(:customer)
end
it { should validate_uniqueness_of(:customer_number).case_insensitive.scoped_to(:user_id) }
end
end
希望这澄清了一些人的问题:)
+0
这是此测试失败的最佳解释(这似乎是一个相当常见的问题!)。谢谢。 – 2016-03-03 03:12:48
相关问题
- 1. 允许空白
- 2. Java列表允许空白
- 3. Graphics.MeasureString允许太多空白
- 4. 更改列不应该允许为空
- 5. Firefox不允许空白contenteditable区域
- 6. 的preg_match允许空白行或文本
- 7. 如何使ESIdentityCardNumberField允许空白
- 8. 电子邮件Regex,允许空白?
- 9. 评估非空白输入但允许空白
- 10. 成功的文件上传打开新的空白页面,也允许“空白/空白”上传
- 11. 我如何使不允许列允许空和允许空列不允许空
- 12. 我们应该允许空/空参数吗?
- 13. 空不允许,但应为空
- 14. 如何允许在一个形式的空白选项时,该模型不允许它(在Django)
- 15. XSD xs:选择不应该允许空选择
- 16. 文本框不应该允许asp.net中的空格使用javascript
- 17. 正则表达式 - 不应该允许空格不断连续
- 18. 应该不允许在单词之间有多个空格
- 19. IEqualityComparer.Equals的实现应该允许空值吗?
- 20. 不允许输入表单中的空白字符/空格
- 21. 变通方法允许IPython中的空白空间
- 22. 验证ASP.Net文本框不为空,但允许空白?
- 23. 意外的XML声明。空白空间不允许
- 24. smartgwt在ComboBoxItem中添加空白行或允许用户设置空白值
- 25. jQuery验证应该允许字母
- 26. 我应该允许多次登录吗?
- 27. 不应该允许单个零或0 ##
- 28. getter和setter应该允许什么?
- 29. 重复记录不应该被允许
- 30. 允许jTextField为空?
我仍然得到“预期的错误,包括 “已被占用” 的时候电子邮件设置为零,没有错误“在运行时应validate_uniqueness_of(:电子邮件)。 – Pablo 2010-06-18 09:41:52