gpt4 book ai didi

ruby-on-rails - 如何在我的模型中正确设置此验证?

转载 作者:太空宇宙 更新时间:2023-11-03 17:40:15 25 4
gpt4 key购买 nike

当我验证一个字符串的格式时,我会做:

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 域,因此您可能还需要正则表达式的另一部分。如果这件事完全失控,您可能需要采用不同的方法并有一个正则表达式列表,您可以将其与之进行比较:

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('|'))
}

关于ruby-on-rails - 如何在我的模型中正确设置此验证?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5811285/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com