我的验证确保必填字段只能设置为A
或R
:
在模特:
validates :status_code, inclusion: { in: %w(A R) }
在RSpec中,我有以下规范:
it { expect(@car).to allow_value("A", "R").for(:status_code) }
it { expect(@car).to_not allow_value(nil, "").for(:status_code) }
第一个RSpec通过,但我在第二个RSID上出错:
Failure/Error: it { expect(@car).to_not allow_value(nil, "").for(:status_code) }
Expected errors when status_code is set to "", got no errors
我错过了什么?我使用的是RSpec 3.1。
答案 0 :(得分:2)
内置验证器接受布尔选项:allow_blank
和:allow_nil
来控制当值为这两者之一时它应该如何表现。试试这个:
validates :status_code, inclusion: { in: %w(A R), allow_blank: false, allow_nil: false }
它可能也可以添加一个存在验证器来处理nil和空字符串:
validates :status_code, inclusion: { in: %w(A R) }, presence: true