2014-01-06 52 views
0

我正在構建一個rails應用程序,用戶在登錄後上傳文檔,然後可以在文檔完成後下載文檔。我試圖創建一個用戶能夠上傳與回形針工作的文檔模型模型 - 對於uploding

請問這種模式工作作爲模型上傳文件的,我已經有一個用戶模型

rails generate scaffold pdf description:string 

回答

1

從上看你的問題,我猜你是新來的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 &服務器,允許您在整個視圖中訪問它們

+0

非常感謝您的幫助。 'rails會生成模型文檔「來生成文檔模型嗎? – neils

+0

沒問題!是的,'rails g model document'會爲你創建文檔模型 - 你必須自己添加'has_attached_file' :) –

+0

對不起,再問一個問題,我非常感謝所有的幫助!數據表會進入'schema.rb'嗎?文檔對象是否也會進入'document.rb'文件? – neils