我正在使用模型上的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中的错误。什么时候应该抓错?我感谢任何帮助!谢谢!
答案 0 :(得分:1)
User模型中有一个类型为enum的列。如果您尝试设置无效值,Rails中的枚举列始终会引发错误。
Rails核心团队explaination:
AR枚举的当前焦点是将一组状态(标签)映射到一个 出于性能原因的整数。目前分配错误的状态是 考虑应用程序级别错误而不是用户输入错误。 这就是你得到ArgumentError 的原因。