我正在构建一个rails应用程序,用户在登录后上传文档,然后在文档完成后下载文档。我正在尝试为能够上传使用回形针
的文档的用户创建模型这个模型是否可以作为上传文档的模型,我已经有了一个用户模型
rails generate scaffold pdf description:string
答案 0 :(得分:1)
根据您的问题判断,我猜测您是Rails的新手,所以我会为您解释上传过程:
<强>模型强>
上传文件可以使用Paperclip处理,如下所示:
#app/models/document.rb
Class Document < ActiveRecord::Base
belongs_to :user # -> allows you to call @user.documents
has_attached_file :attachment #-> for Paperclip
end
#app/models/user.rb
Class User < ActiveRecord::Base
has_many :documents # -> allows you to call @user.documents
end
您的数据表将如下所示:
users
id | name | etc | etc | created_at | updated_at
documents
id | user_id | attachment_file_name | attachment_content_type | attachment_file_size | attachment_uploaded_at | created_at | updated_at
上传
要上传所需的项目,Paperclip基本上会创建一个单独的ActiveRecord对象,其内部附件
这意味着您必须在视图中调用上传内容,您需要在document
对象上调用对象(方法):
@user.documents.each do |document|
image_tag document.attachment.url #-> outputs the image
end
上传过程的工作方式非常简单:
#app/controllers/documents_controller.rb
def new
@document = Document.new
end
def create
@document = Document.new(document_params)
@document.save
end
private
def document_params
params.require(:document).permit(:attachment).merge(user_id: current_user.id)
end
这将允许您创建此表单:
#app/views/documents/new.html.erb
<%= form_for @document, html: { miltipart: true } do |f| %>
<%= f.file_field :attachment %>
<% end %>
这将保存数据库和文件中的文件。服务器,允许您在整个视图中访问它们