在我的Ruby on Rails应用程序中,我使用自定义验证,并尝试确保字符串中没有带有此代码的空格:
record.errors[field] << "First name cannot include spaces" if value.gsub(/\s+/, "")
但它不起作用,就好像我输入了一些没有空格的文本,错误仍然出现,有没有办法可以做到这一点?
答案 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