Rails 3.1 Paperclip - лучший способ организовать структуру папок для загружаемых файлов? - PullRequest
1 голос
/ 11 января 2012

Я использую Paperclip для сохранения файлов для приложения Rails 3.1. Все работает нормально, хотя меня немного смущает тот факт, что все сохраняется в папке Public ..

У меня есть такая структура:

class Photo < ActiveRecord::Base  
 belongs_to :photoable, :polymorphic => true
 has_attached_file :photo,  :styles => { :large => "800x600", :medium => "400x300>", :thumb => "100x100>"  }    
end  

class Project < ActiveRecord::Base
 attr_accessible :projectname, :photos_attributes
 has_many :photos, :as => :photoable 
 accepts_nested_attributes_for :photos, :allow_destroy => true  
end

Очевидно, что могут быть и другие модели, у которых также есть has_many: photos,: as =>: photoable

Затем, если я загружаю фотографию, она сохраняется в Public / system / photos / 1 (или / 2 и т. Д.). Все работает нормально, но мне интересно, есть ли лучший способ организовать это (чтобы структура папок была немного более удобочитаемой (с именами пользователей, проектами и т. Д.)?

Также поправьте меня, если я ошибаюсь, но я думал, что файлы должны идти в ресурсы, а не в общую папку?

Спасибо

Ответы [ 2 ]

2 голосов
/ 11 января 2012

Для этого есть опция: path в has_atached_file. Проверьте раздел «Хранение» README: https://github.com/thoughtbot/paperclip

Файлы, назначенные в качестве вложений, по умолчанию помещаются в каталог, указанный параметром: path для has_attached_file. От по умолчанию это местоположение : Rails_root / государственные / система /: привязанность /: идентификатор /: стиль /: имя файла. это местоположение было выбрано потому, что при стандартных развертываниях Capistrano каталог public / system связан с общим каталогом приложения, это означает, что он выживет между развертываниями. Например, используя это : путь, у вас может быть файл на

0 голосов
/ 11 января 2012

Содержимое, загруженное пользователями, должно помещаться в общедоступную / системную папку, а элементы дизайна, такие как таблицы стилей, изображения и JavaScript, должны помещаться в соответствующую папку app / assets.

Если вы хотите добавить в путь к файлу некоторую дополнительную информацию, которая не поддерживается по умолчанию (например, имя пользователя), вам следует взглянуть на интерполяции скрепок (https://github.com/thoughtbot/paperclip/wiki/Interpolations)

...