什么时候创建加注错误?

时间:2017-06-10 05:06:31

标签: ruby-on-rails testing rspec-rails

我正在使用模型上的rspecs进行测试

 u = User.create(email: 'asd@we.com', password: 'asdasdasd', admin: true, firstname: 'qwe', lastname: 'wer', grade: 5, section: 'w', role: 'teacher')
       expect(u).to be_valid

但如果将role设置为随机值,例如" principal"则会引发异常。发生这种情况是因为角色是一个有两个可能值的枚举"学生"和"老师"

所以在这种情况下我不能使用expect(u).to be_valid。我必须抓住异常。它抛出的错误是

ArgumentError:
       'principal' is not a valid role

所以我想知道其他什么情况.create抛出错误而不是仅仅填充model.errors中的错误。什么时候应该抓错?我感谢任何帮助!谢谢!

1 个答案:

答案 0 :(得分:1)

User模型中有一个类型为enum的列。如果您尝试设置无效值,Rails中的枚举列始终会引发错误。

Rails核心团队explaination

  

AR枚举的当前焦点是将一组状态(标签)映射到一个   出于性能原因的整数。目前分配错误的状态是   考虑应用程序级别错误而不是用户输入错误。   这就是你得到ArgumentError 的原因。