Вопрос

Мне нужно определить конкретный путь структуры для хранения моих файлов в 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
Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top