尝试在我的某个模型中测试以下验证时,我遇到了一个问题:
validate :clientnumber, format: { with: /\A\d\d\d\z/ }
基本上我想让“001”成为有效的条目,但不允许“1”。当我运行这些测试时:
it do
should allow_value('880', '546', '001', '999').for(:clientnumber)
end
it do
should_not allow_value('foo', '8ar', '1' ).for(:clientnumber)
end
我得到以下结果。
should allow clientnumber to be set to any of ["880", "546", "001", "999"]
但是,
should not allow clientnumber to be set to any of ["foo", "8ar", "1"] (FAILED - 1)
失败
最初我甚至尝试过在那里测试普通整数,但意识到即使字符串形式通过它也没有实际意义。在rubular上测试正则表达式时,它不会返回任何与单个或2位数字匹配的匹配项。最终我希望它只允许字符串(表格中的数据类型)的格式为/ \ d \ d \ d /。我错过了什么导致“001”和“1”都能通过?
另外我注意到,在测试整数时,即使它在无效字符串数的右边,测试也会对整数失败。