我在我的模型中使用这个正则表达式来验证用户提交的 URL。我不想强制用户输入 http 部分,但如果它不存在,我想自己添加。
validates :url, :format => { :with => /^((http|https):\/\/)?[a-z0-9]+([-.]{1}[a-z0-9]+).[a-z]{2,5}(:[0-9]{1,5})?(\/.)?$/ix, :message => " is not valid" }
知道我该怎么做吗?我对验证和正则表达式的经验很少..
最佳答案
如果它不存在,使用前置过滤器添加它:
before_validation :smart_add_url_protocol
protected
def smart_add_url_protocol
unless url[/\Ahttp:\/\//] || url[/\Ahttps:\/\//]
self.url = "http://#{url}"
end
end
保留您的验证,这样如果他们打错了,他们可以更正协议(protocol)。
关于ruby-on-rails - 如果不存在,请将 https) 添加到 URL?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7908598/