自定义验证不能包含空格

时间:2015-02-17 18:31:55

标签: ruby-on-rails ruby validation whitespace

在我的Ruby on Rails应用程序中,我使用自定义验证,并尝试确保字符串中没有带有此代码的空格:

record.errors[field] << "First name cannot include spaces" if value.gsub(/\s+/, "")

但它不起作用,就好像我输入了一些没有空格的文本,错误仍然出现,有没有办法可以做到这一点?

2 个答案:

答案 0 :(得分:2)

您不希望gsub,而是match

gsub将返回没有空格的字符串,这在Ruby中是真实的。

如果匹配的字符串存在,

match将返回匹配的字符串,如果不存在,则返回nil。零是假的。

record.errors[field] << "First name cannot include spaces" if value.match(/\s+/)

答案 1 :(得分:0)

@evanbikes的答案是正确的,但是一个小的语法修正(可能会在将来为您节省一些麻烦):

record.errors.add(field, "First name cannot include spaces") if value.match(/\s+/)

以防Rails人员选择在将来更改用于错误的存储机制。

请参阅http://api.rubyonrails.org/classes/ActiveModel/Errors.html#method-i-add