2011-07-25 63 views
0

如何让Rails将“http://”值视为空白:如果值为“http://”,则不要验证网站字段并插入空字符串(不是“http://”)到数据库中?Ruby on Rails表单验证:默认字段值

鉴于:

<%= f.text_field :website, value: "http://" %> 

在模型:

validates :website, format: { with: /^https?:\/\/\S+/i }, allow_blank: true 

回答

1

您可以使用:如果还是:除非有条件验证(未经测试):

validates :website, format: { with: /^https?:\/\/\S+/i }, allow_blank: true, :unless => ['http://', 'https://'].include?(params[:website]) } 

使用before_save回调将字符串转换为空白:

def before_save 
    self.website = "" if ['http://', 'https://'].include?(self.website) 

    true 
end 
+1

你最好用== – apneadiving

+0

@apneadiving替换'include',你能解释一下吗? –

+0

只是错误的:我读的包含原因太快。我的不好,所以+1 :) – apneadiving