2

ここに単純な Rails モデルがあります。

class Attachment < ActiveRecord::Base   
has_attached_file :attachment, styles: lambda { |attachment| 
    store_sizes?(attachment) ? { 
      :large => ["414x300>",:png],
      :medium => ["138x100>", :png],
      :for_index => ["180x100", :png],
      :for_preview => ["180x100", :png],
      :thumb => ["62x42>", :png],
      :approval => ['285x122#', :png],
      :origin_png => ['100%', :png]
    } : {}   },
    :storage => :s3,
    :s3_credentials => "#{Rails.root}/config/s3.yml",
    :s3_headers => {"Content-Disposition" => "attachment"}

[... 何とか...]

与えられたタスクが複雑なため、DB に大量の添付ファイルがありますが、S3 ストレージには存在しません。

問題は次のとおりです。

 a = Attachment.last

 a.attachment 

これは、次のような派手な URL を返します。

だから今、私は自分のファイルを添付ファイル属性に入れたいと思います:

 my_new_file = File.open('/tmp/somefile.jpg')
 a.attachment = my_new_file
 a.attachment.save

保存に成功した後、Amazon で作成されたものを確認しましたが、元のスタイルしかありません。問題は、:large、:medium、:path、:for_index などのスタイルが必要なことです。

やってみた

 a.attachment.reprocess! 

しかし、それはすべてのスタイルを忘れており、:original しかありません。

S3 でファイルを更新しながらすべてのスタイルを作成する方法は?

4

1 に答える 1