Определите специфический путь Dragonfly для Datastore S3
-
13-10-2019 - |
Вопрос
Мне нужно определить конкретный путь структуры для хранения моих файлов в S3.
Пример:
Вместо
'Bucket_name/2010/12/23/127/43/2345/file.jpg'
я нуждаюсь
'Bucket_name/Artists/elvis_presley/faceShot/100x100.jpg'
'bucket_name/books/the_black_cat/cover/180x280.jpg'
и т.п.
Я прочитал аналогичный вопрос, но не поймал большую часть этого.
Спасибо.
Решение
ОБНОВИТЬ ---
Просто сделайте что -то подобное, вы можете переопределить, как ниже, если вам действительно нужно что -то особенное. Встроен более простой способ:
some_image.store({:path => "images/some_identifier/the_name.jpg"})
Это то, что мы будем хранить на вашем ведре.
Оригинальный пост
Вставьте это в файл, скажем, Dragonfly.rb, в конфигурации/инициализаторах
# Monkey patch for Dragonfly's S3 implementation
module Dragonfly
module DataStorage
class S3DataStore
def generate_uid(name)
# Replace this sucker for a better name
"#{Time.now.strftime '%Y/%m/%d/%H/%M/%S'}/#{rand(1000)}/#{name.gsub(/[^\w.]+/, '_')}"
end
end
end
end
Другие советы
Поскольку когда -нибудь вокруг Dragonfly 0.9.4 вы можете сделать это в модели:
class User < ActiveRecord::Base
image_accessor :image do
storage_path{ "users/#{self.user_type}/#{self.login_name" }
end
# ...
end
Не связан с StackOverflow