我正在为url图片扩展名编写正则表达式。
我从身体获取网址并判断网址中是否有图片扩展名。
我希望你判断是否有更好的写作风格
def invalid_extension
urls = URI.extract(body, %w(http https))
if urls.map { |x| (x.match(/\.(jpg|jpeg|png|gif|bmp)/)) }.compact.present?
errors.add(:body, "Invalid extension")
end
答案 0 :(得分:0)
编写自己的代码的更好方法(假设您只想在有有效图像URI的情况下返回):
def invalid_extension
image_extensions = %(jpg jpeg png gif bmp)
URI.extract(body, %w(http, https)) do |uri|
return if image_extensions.include? URI(uri).body.split('.').last
end
errors.add(:body, "Invalid extension")
end
但是,您的代码存在一些问题:
body
包含多个URI,其中一些不是图像URI,该怎么办? URI.extract
方法旨在匹配字符串中的多个 URI。errors
实际引用了什么,这个代码是在模型上下文还是控制器上下文中?