Определите конкретный путь стрекозы для S3 Datastore - PullRequest
0 голосов
/ 24 декабря 2010

Мне нужно определить конкретный путь к структуре для хранения моих файлов в S3.

Пример:

Вместо

'bucket_name / 2010/12/23/127/43/2345 / File.jpg'

Мне нужно

bucket_name / художники / elvis_presley / faceshot / 100x100.jpg '

bucket_name / книги / the_black_cat / крышка / 180x280.jpg '

и т.д.

Я прочитал похожий вопрос, но не понял много его.

Спасибо.

Ответы [ 2 ]

4 голосов
/ 28 июля 2011

Так как когда-то вокруг Dragonfly 0.9.4, вы можете сделать это в модели:

class User < ActiveRecord::Base
  image_accessor :image do
    storage_path{ "users/#{self.user_type}/#{self.login_name" }
  end
  # ...
end
2 голосов
/ 21 января 2011

ОБНОВЛЕНИЕ ---

Просто сделайте что-то подобное, вы можете переопределить, как показано ниже, если вам действительно нужно что-то особенное.Встроен более простой способ:

some_image.store({:path => "images/some_identifier/the_name.jpg"}) 

Вот что мы будем хранить в вашем ведре.

Оригинальный пост


Прикрепитев файле, скажем, dragonfly.rb, в config / initializers

# 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
...