Ruby on rails 如何在模型中正确设置此验证?
验证字符串格式时,我将执行以下操作:Ruby on rails 如何在模型中正确设置此验证?,ruby-on-rails,ruby,ruby-on-rails-3,validation,Ruby On Rails,Ruby,Ruby On Rails 3,Validation,验证字符串格式时,我将执行以下操作: validates :link, :uniqueness => true, :format => { :with => (regular expression) } 我希望链接是此正则表达式的youtube视频: /^http:\/\/www.youtube\.com\/watch\?v=([a-zA-Z0-9\-]*)/ 或vimeo视频: /^http:\/\/www.vimeo\.com\/(\d+)/
validates :link, :uniqueness => true,
:format => { :with => (regular expression) }
我希望链接是此正则表达式的youtube视频:
/^http:\/\/www.youtube\.com\/watch\?v=([a-zA-Z0-9\-]*)/
或vimeo视频:
/^http:\/\/www.vimeo\.com\/(\d+)/
如何在我的模型中设置此验证?您可以将这两个正则表达式组合成一个正则表达式,但我假定您的意思是有两个不同的表达式,而不是两个相同的表达式:
validates :link,
:uniqueness => true,
:format => {
:with => %r[http://(?:www\.youtube\.com/watch\?v=(\w+)|www\.vimeo\.com...)]
}
使用%r[…]
而不是/…/
可以避免所有斜杠
另外请注意,YouTube可能会使用一个youtu.be
域,因此您可能需要正则表达式的另一部分。如果这件事完全失控,您可能需要采取不同的方法,并将其与一个regexp列表进行比较:
VALID_URLS = [
%r[http://www\.youtube\.com/watch\?v=(\w+)],
%r[http://www\.youtu\.be/(\w+)],
%r[ ... ]
]
然后验证如下内容:
validates :link,
:uniqueness => true,
:format => {
:with => Regexp.new(VALID_URLS.join('|'))
}
您可以将这两个正则表达式组合为一个,但我认为您的意思是有两个不同的表达式,而不是两个相同的表达式:
validates :link,
:uniqueness => true,
:format => {
:with => %r[http://(?:www\.youtube\.com/watch\?v=(\w+)|www\.vimeo\.com...)]
}
使用%r[…]
而不是/…/
可以避免所有斜杠
另外请注意,YouTube可能会使用一个youtu.be
域,因此您可能需要正则表达式的另一部分。如果这件事完全失控,您可能需要采取不同的方法,并将其与一个regexp列表进行比较:
VALID_URLS = [
%r[http://www\.youtube\.com/watch\?v=(\w+)],
%r[http://www\.youtu\.be/(\w+)],
%r[ ... ]
]
然后验证如下内容:
validates :link,
:uniqueness => true,
:format => {
:with => Regexp.new(VALID_URLS.join('|'))
}
除了
v
,youtube视频还能有不同的参数吗?我认为v
是相当标准的,但你必须进行实验才能确定。除了较短的参数和其他随机参数外,这就是我所期望的。除了v
,youtube视频还能有不同的参数吗?我认为v
是相当标准的,但你必须进行实验才能确定。除了简短的,和其他随机参数,这就是我所期望的。