Rails:仅在数据存在时使用正则表达式

时间:2012-07-17 20:57:00

标签: ruby-on-rails regex validation

现在,我有一个正则表达式验证用户的facebook链接,如下:

facebook_regex = /(http:\/\/)?(https:\/\/)?(www.)?facebook.com\/[a-zA-Z0-9\.]*/i
validates :facebook, :format => { :with => facebook_regex }

正则表达式本身工作得很好,但我试图让FB链接可选,如果用户不希望他们发布。但是,如果Facebook字段留空,我的验证就会出错。

处理此问题的最佳方法是什么?

3 个答案:

答案 0 :(得分:4)

尝试将allow_blank: true添加到验证中:

validates :facebook, :format => { :with => facebook_regex }, :allow_blank => true

您还可以添加以下内容:

validates :facebook, :format => { :with => facebook_regex }, :unless => :blank?

答案 1 :(得分:0)

allow_blank是您正在寻找的选项:

validates :facebook, format: { with: facebook_regex , allow_blank: true}

答案 2 :(得分:0)

实际上,我在这里找到了答案:http://guides.rubyonrails.org/active_record_validations_callbacks.html

原来你可以传递一个名为:allow_blank的选项,它完全符合我的希望!