我已经在我的Ruby on Rails应用程序中为我的用户实现了文件上传。每个用户都可以上传一个 xml 文件,但现在我尝试使用多个文件执行此操作,但我遇到了一些问题。谁能给我一个如何升级代码的例子?
我已经可以上传多个文件,并且可以在数据库中看到它们,但是如果我上传更多文件(例如 1),他会覆盖以前的文件。如何列出所有用户文件?
编辑:
我每次只需要上传一个文件(没有多个:true)。我的目标是在用户上传文件后添加更多文件。
文档摘录。
添加一个可以存储数组的列。例如,这可以是数组列或 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'