2016-11-15 4 views
0

私はSpacePhotoというモデルを持っています。ペーパークリップからSpacePhoto has_attached_file :photo私のモデルのIDをUUIDに変更する破損したペーパークリップファイルのパス

スペースフォトが整数IDを持っていましたが、私は最近、次の移行で、UUIDにそれを変更:

class ChangePhotoPrimaryKeyType < ActiveRecord::Migration 
    def change 
    add_column :space_photos, :uuid, :uuid, default: "uuid_generate_v4()", null: false 

    change_table :space_photos do |t| 
     t.remove :id 
     t.rename :uuid, :id 
    end 

    execute "ALTER TABLE space_photos ADD PRIMARY KEY (id);" 
    end 
end 

URLを取得するには、私はspace_photo.photo.urlを行うだろうが、今はもはや私を与えること正しいURL。たとえば、その移行を実行する前に、私はURL https://s3-us-west-2.amazonaws.com/instally.beta/space_photos/photos/000/000/071/original/avatar.jpg?1478889772を取得します。今、私は得るhttps://s3-us-west-2.amazonaws.com/instally.beta/space_photos/photos/086/a71/a9-/original/avatar.jpg?1479167261

違いは、URLの真ん中に3文字の3つのグループですが、それらがどこから来ているのか把握するために十分なPaperclipの内部についてはわかりません。

答えて

1

:id_partition補間を使用する添付ファイルのPaperclip URLの結果は、idを最初の9文字の3文字の分割パス形式に分割する問題です。あなたが代わりに:id補間で:id_partitionurlオプションを指定して交換する必要があり、これを無効にするには

/system/:class/:attachment/:id_partition/:style/:filename 

:あなたは、URLのオプションを提供していないとペーパークリップは、デフォルトを使用しているので、私はこれを疑う

です。添付ファイルがあるモデルでは、has_attached_file宣言を次のように変更します。

has_attached_file :photo, 
        url: '/system/:class/:attachment/:id/:style/:filename' 
関連する問題