这个RubyonRails代码的可能oneliner



我有一个类型为Rails ActionDispatch::Http::UploadedFile的文件对象。

我需要用通用名称覆盖用户指定的文件名,同时保留文件的扩展名。这就是我目前实现代码的方式。有没有一种更好、更优雅的方法可以用Ruby写这篇文章。

extension = File.extname(file_name.original_filename)
file_name.original_filename = "hello#{extension}"
file.original_filename.sub!(/.*./, "hello.")

这是因为.*很贪婪,会把所有东西都咽到最后。它发现。这恰好是延期之前的那个。

或者要做一个确切的替换,你可以只做:

file_name.original_filename = "hello" + File.extname(file_name.original_filename)

从技术上讲,仍然是一个oneliner lol.

编辑:我误解了。(我认为new_name包含一个扩展,它将被"old_fname"的扩展所取代。)正如@Bassel所说(谢谢,Bassel),它应该只是:
old_fname = "/a/b/c.hello" 
new_fname = "/d/e/f"
new_fname += File.extname(old_fname)

相关内容

  • 没有找到相关文章

最新更新