ここに単純な 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 でファイルを更新しながらすべてのスタイルを作成する方法は?