0
我正在構建一個rails應用程序,用戶在登錄後上傳文檔,然後可以在文檔完成後下載文檔。我試圖創建一個用戶能夠上傳與回形針工作的文檔模型模型 - 對於uploding
請問這種模式工作作爲模型上傳文件的,我已經有一個用戶模型
rails generate scaffold pdf description:string
我正在構建一個rails應用程序,用戶在登錄後上傳文檔,然後可以在文檔完成後下載文檔。我試圖創建一個用戶能夠上傳與回形針工作的文檔模型模型 - 對於uploding
請問這種模式工作作爲模型上傳文件的,我已經有一個用戶模型
rails generate scaffold pdf description:string
從上看你的問題,我猜你是新來的Rails,所以我會解釋上傳過程爲您提供:
模式
上傳的文件可以用回形針這樣的處理:
#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
上傳
要上傳的項目,你希望回形針基本上創建一個單獨的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 %>
這將文件保存在您r DB &服務器,允許您在整個視圖中訪問它們
非常感謝您的幫助。 'rails會生成模型文檔「來生成文檔模型嗎? – neils
沒問題!是的,'rails g model document'會爲你創建文檔模型 - 你必須自己添加'has_attached_file' :) –
對不起,再問一個問題,我非常感謝所有的幫助!數據表會進入'schema.rb'嗎?文檔對象是否也會進入'document.rb'文件? – neils