如何将user_id附加到Rails文件上传?

时间:2014-09-18 07:01:52

标签: ruby-on-rails ruby

我正在构建一个应用程序,用户可以上传csv文件以将数据加载到我们的平台上。我有一个表单,允许用户上传文件和一个方法,将文件保存在指定的文件夹中。我想将user_id附加到文件名。我该怎么做?

我的表格:

<%= form_tag import_listings_path, multipart: true do %>
    <%= file_field_tag :my_file %>
    <%= hidden_field_tag :user_id, current_user.id %>
    <%= submit_tag "Import CSV" %>
<% end %>

我的控制器方法:

def import
    tmp = params[:my_file].tempfile
    file = File.join("public", params[:my_file].original_filename)
    FileUtils.cp tmp.path, file
end

例如,如果用户上传test.csv且其user_id为20.我希望新文件名为test20.csv

1 个答案:

答案 0 :(得分:-1)

有点难看,但这应该可以胜任...基本上提取文件扩展名(获取&#39;。&#39;之后的最后一个字符串),附加用户ID并添加扩展名:

x = params[:my_file].original_filename.split('.')
x[x.length - 2] += params[:user_id] 
file = File.join("public", x.join('.'))