0

ユーザーが写真をアップロードできるRailsアプリがあります。写真はAmazonS3バケットにアップロードされます。「リスト」に「画像」がたくさんある「リスト」がたくさんある「寄稿者」がいます。このタイプのディレクトリにすべての画像をアップロードしたいのですが。

:contributor_id/:listing_id/IMAGES_HERE.jpg

また、寄稿者が別のリストを作成した場合に、その寄稿者のまったく新しいフォルダーが作成されないようにしたいと思います。コントリビューターIDを使用して、作成済みのフォルダーにアップロードしたいと思います。

これをどのように達成できるかについて何か考えはありますか?これが私の現在の:pathがどのように見えるかです

  has_attached_file :asset,
                :styles => {:large => "640x480", :medium => "300x300", :thumb => "100x100" },
                :storage => :s3,
                :s3_credentials => "#{Rails.root}/config/s3.yml",
                :path => "/:contributor_id/:id/:filename"

答え:

ご回答ありがとうございます。これが、Paperclipの補間機能を使用して機能させる方法です。

Paperclip.interpolates('contributor_id') do |attachment, style|
 attachment.instance.listing.contributor_id
end

Paperclip.interpolates('listing_name') do |attachment, style|
 attachment.instance.listing.title.parameterize
end

そして、私の道..

:path => "/:contributor_id/:listing_name/:filename"
4

1 に答える 1

1

よくわかりませんが、通常のようになります。

module Paperclip      
  module Interpolations

    def timestamp attachment, style
      attachment.instance_read(:updated_at).to_i
    end

  end
end

そして、私はそれが次のように見えるべきだと思います:

module Paperclip      
   module Interpolations

     def contributor_id attachment, style
       attachment.instance_read(:contributor_id)
     end

   end
end

PaperClipのカスタム補間について詳しくは、こちらをご覧ください。

于 2012-05-17T15:36:45.773 に答える