у меня
file_ext = attach.document_file_name.capture(/\.[^.]*$/)
но я думаю, что нет метода захвата.
Я пытаюсь получить расширение файла из строки. У меня еще нет файла.
Существует также встроенная функция ruby File.extname :
file_ext = File.extname(attach.document_file_name)
(с той разницей, что File.extname('hello.') возвращает '', , тогда как ваше регулярное выражение вернет '.')
File.extname('hello.')
''
'.'
Как насчет:
file_ext = attach.document_file_name[/\.[^.]*$/]
Если вы хотите использовать регулярное выражение для этого, вы можете просто сделать:
irb(main):040:0> "foo.txt"[/\w*.(\w*)/,1] => "txt"
Вы можете сделать регулярное совпадение в рубине следующим образом:
file_ext = (/\.[^.]*$/.match(attach.document_file_name.to_s)).to_s
Для получения дополнительной информации, пожалуйста, проверьте http://ruby -doc.org / core / classes / Regexp.html