paperclip gem を使用して画像を処理し、Amazon S3 に保存しています。各画像は人の名前を表しています。Unicode 文字を含む名前のサポートも追加したいのですが、ペーパークリップが名前に Unicode 文字を含むファイルをアップロードできないため、機能しません。アップロードする前にÑをNに変更することはできません.Nでアップロードされた画像を上書きしてしまうからです。NUÑO と NUNO の 2 人のユーザー。NUÑO.jpg を NUNO.jpg としてアップロードするようにペーパークリップに指示することはできません。これは、以前の NUNO.jpg を上書きしてしまうからです。
これが私のかなり標準的な本番環境/ステージング環境の構成です。
config.paperclip_defaults = {
:storage => :s3,
:url => ':s3_domain_url',
:path => 'assets/:class/:id/:style.:extension',
:s3_credentials => {
:bucket => ENV['AWS_BUCKET'],
:access_key_id => ENV['AWS_ACCESS_KEY_ID'],
:secret_access_key => ENV['AWS_SECRET_ACCESS_KEY_ID']
}
}
画像が添付された関連クラスは次のとおりです。
class NameSpread < ActiveRecord::Base
(...)
has_attached_file :rendered_image,
default_url: lambda { |attach| attach.instance.processing_image },
path: lambda { |attach| attach.instance.save_path },
styles: { (..) },
processors: [ :name_spread_processor ],
default_style: :spread
(...)
end
save_path メソッドは次のとおりです。
def save_path
if Rails.env.production? || Rails.env.staging?
"assets/:class/#{gender}/#{name}/:style.jpg"
else
"#{Rails.root}/public/assets/:class/#{gender}/#{name}/:style.jpg"
end
end
これはめちゃくちゃになる部分です:#{name}
何か案は?