2011-10-19 53 views
16

人們如何編寫涉及Paperclip的Rails遷移?我覺得我可能會錯過一些明顯的東西,因爲我現在編寫了自己的移植助手黑客入侵,這使得它更容易,並且還負責執行必要的文件系統更改。當然,在部署到生產環境之前,您應該在開發(和暫存)環境中測試運行這些類型的遷移。如何做到涉及回形針的Rails遷移

Paperclip migration rename, add and remove helpers
Paperclip change path migration helper(不是一個真正的數據庫遷移,但認爲它符合相當不錯反正)

是否有更好的解決方案或最佳做法?有些人似乎創造了耙子任務等,這感覺非常麻煩。

回答

37

有在寶石該發電機包括:

軌道2:

​​

導軌3:

rails generate paperclip Class attachment1 (attachment2 ...) 

例如

rails generate paperclip User avatar 

產生:

class AddAttachmentsAvatarToUser < ActiveRecord::Migration 
    def self.up 
    add_column :users, :avatar_file_name, :string 
    add_column :users, :avatar_content_type, :string 
    add_column :users, :avatar_file_size, :integer 
    add_column :users, :avatar_updated_at, :datetime 
    end 

    def self.down 
    remove_column :users, :avatar_file_name 
    remove_column :users, :avatar_content_type 
    remove_column :users, :avatar_file_size 
    remove_column :users, :avatar_updated_at 
    end 
end 

也看到readme

class AddAvatarColumnsToUser < ActiveRecord::Migration 
    def self.up 
    change_table :users do |t| 
     t.has_attached_file :avatar 
    end 
    end 

    def self.down 
    drop_attached_file :users, :avatar 
    end 
end 
+0

由於本例中使用的輔助方法,我應該已經有點更加清楚,我主要的意思遷移涉及現有的回形針列和做重命名和路徑更改將需要文件系統更改等 –

+1

啊,檢查出這個問題,然後:http://stackoverflow.com/questions/270811 5/paperclip-renaming-files-after-theyre-saved/6335337#6335337 – Jared

+0

好吧,這個鎖定或多或少像我在幫手中所做的那樣。那麼猜猜人們是如何做到這一點的。 –