2013-02-12 49 views
0

例如,我以相同的形式上傳兩個文件A和B,回形針將兩個條目插入到數據庫中。PaperClip:用於多個文件上傳的一個數據庫條目

是否有辦法強制回形針創建只有一個數據庫條目並插入到兩個不同的字段(例如file_name_A,file_name_B,file_size_A,file_size_B ....)?

UPDATE

在我submission.rb:

attr_accessible :id, :email, :uploads_attributes 
has_many :uploads, :dependent => :destroy 
accepts_nested_attributes_for :uploads, :allow_destroy => true 

在我upload.rb

belongs_to :submission 
attr_accessible :id, :user_id, :package_a_file_name, :package_a_file_size, :package_b_file_name, :package_b_file_size, :updated_at 
has_attached_file :package 
+1

您的模型如何設置?不是paperclip只是爲每個附件添加字段到模型的表 - 例如'attachment_file_name','attachment_2_file_name'等? – 2013-02-12 23:20:08

+0

@ChristianVarga,我只有一個模型,但我也使用jQuery文件上傳來附加多個文件,鏈接在這裏:https://github.com/blueimp/jQuery-File-Upload – 2013-02-13 14:55:12

+0

但是,我們有多少個文件談論?就像你的例子一樣?或者你是否真的想要你的模型接受0到多個文件?我問這個問題是因爲答案根據你想要做什麼而不同。 – 2013-02-13 16:54:49

回答

1

沒有什麼不好的搭配方式模型成立。如果您希望更改要求,則將多個上傳數據存儲在單獨的模型中可以更輕鬆地維護賽道。

您只能在upload.rb中指定一個附加文件,這就是爲什麼它爲每次上傳插入單獨的條目的原因。指定隨機attr_accessibles不會做任何事情,這些字段甚至不存在。

可以完全刪除上傳模式,只是存儲直接提交上傳:

submission.rb

has_attached_file :package_a 
has_attached_file :packabe_b 

這將在上傳存儲在一個單列,與提交相關聯。這不可擴展。

我不會像上面那樣以不可縮放的方式在您的上傳模型中存儲多個上傳內容,這從OOP的角度來看並不合邏輯。

總而言之,我認爲你現在設置的方式是最好的方法。

+0

謝謝你的回答!雖然它不是我正在尋找的。我必須使用嵌套模型,因爲我有兩個表'提交'和'上傳',它們通過外鍵互相引用,用戶應該一次上傳兩個文件。無論如何,我已經嘗試了您提供的解決方案(使用單一模型),但它似乎也不起作用,它仍然給我兩個條目,一個帶有「package_b_file_name」「null」,另一個帶有「package_a_file_name」null ' – 2013-02-14 19:29:49

+0

如果它給了你兩個條目,你就會有大量錯誤的配置。回形針是微不足道的,您可以定義附加文件,併爲表單的每個附件添加'form.file_field:attachment_name',就是這樣。但是你已經有了自定義的東西,所以如果你想要幫助調試,你必須準確解釋你是如何設置的,併爲模型和表單上傳提供所有相關的代碼。否則,我們不知道發生了什麼。 – 2013-02-14 21:13:13

+0

這裏的代碼片段的新問題:http://stackoverflow.com/questions/14900711/paperclip-multiple-has-attached-file-in-one-model – 2013-02-15 18:07:42