Ruby on Rails:使用carrierwave上传多个文件

时间:2016-05-25 09:54:28

标签: ruby-on-rails carrierwave

我已经在我的ruby on rails应用中为我的用户实现了文件上传。每个用户都可以上传一个xml文件,但现在我尝试用多个文件来做,但是我遇到了一些问题。任何人都可以举例说明如何升级我的代码?

我已经可以上传多个文件,我可以在数据库中看到它们,但如果我上传更多(例如1),他会覆盖以前的文件。我如何列出所有用户文件?

修改

我每次只需要上传一个文件(没有倍数:true)。 我的目标是在用户上传后添加更多文件。

1 个答案:

答案 0 :(得分:0)

Documentation摘录。

  

添加一个可以存储数组的列。例如,这可以是数组列或JSON列。您的选择取决于您的数据库支持的内容。例如,创建一个这样的迁移:

rails g migration add_avatars_to_users avatars:json
rake db:migrate
  

打开模型文件并安装上传器:

class User < ActiveRecord::Base
  mount_uploaders :avatars, AvatarUploader
end
  

确保将文件输入字段设置为多个文件字段。例如在Rails中,您将要执行以下操作:

<%= form.file_field :avatars, multiple: true %>
  

此外,请确保您的上传控制器允许多文件上传属性,指向散列中的空数组。例如:

params.require(:user).permit(:email, :first_name, :last_name, {avatars: []})
  

现在您可以在上传对话框中选择多个文件(例如SHIFT + SELECT),并在保存记录时自动存储它们。

u = User.new(params[:user])
u.save!
u.avatars[0].url # => '/url/to/file.png'
u.avatars[0].current_path # => 'path/to/file.png'
u.avatars[0].identifier # => 'file.png'