【问题标题】:When does create raise error?何时创建引发错误?
【发布时间】:2017-06-10 05:06:31
【问题描述】:

我正在使用模型上的 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

但如果将角色设置为随机值(例如“校长”),则会引发异常,这是因为角色是具有两个可能值“学生”和“教师”的枚举

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

ArgumentError:
       'principal' is not a valid role

所以我想知道 .create 会在哪些其他情况下引发错误,而不仅仅是在 model.errors 中填充错误。我应该什么时候发现错误?我很感激任何帮助!谢谢!

【问题讨论】:

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


【解决方案1】:

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

Rails 核心团队explaination

AR 枚举当前的重点是将一组状态(标签)映射到一个 出于性能原因的整数。 目前分配错误的状态是 被认为是应用程序级错误,而不是用户输入错误。 这就是您收到 ArgumentError 的原因

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-09-05
    • 2018-09-06
    • 2012-02-12
    • 2016-11-07
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多