использование скрепки с безопасными и незащищенными файлами - PullRequest
0 голосов
/ 16 декабря 2009

Во-первых, у нас есть структура пространства имен / sti'd для наших различных типов 'Media'

Media< Ar::Base
Media::Local < Media
Media::Local::Image < Media::Local
Media::Local::Csv < Media::Local

и т. Д. И т. Д.

Это отлично , так как у пользователя может быть много носителей, и то, как мы отображаем каждый кусочек носителя, основано на имени класса и частично отвечающей части.

Но что, если у нас есть несколько CSV, которые должны быть в безопасности? То есть они не могут находиться внутри публики. Я действительно ненавижу идею разветвления Media снова и делать что-то вроде этого:

Media::Secure < Media
Media::Secure::Image < Media::Secure
Media::NotSecure < Media
Media::NotSecure::Image < Media::NotSecure

... где Secure и NotSecure будут передавать различные параметры в has_attached_file.

Теперь есть два класса, которые представляют Image, и это делает мою систему view / helper намного более сложной - не говоря уже о том, что она кажется очень тупой.

То, что я действительно хотел бы сделать, это иметь возможность изменить место сохранения определенных объектов Paperclip :: Attachment до их сохранения (например, все, что было загружено с помощью foo_secure_action), - но я не могу этого сделать сделать эту работу. Paperclip :: Attachment имеет хэш @options с: path и: url, но изменение их перед сохранением не влияет на то, где они фактически установлены. Даже если это возможно, я не уверен, будет ли это иметь дальнейшие последствия ...

Я открыт для альтернативных идей для структурирования этих данных, но на данный момент мне нравится идея использовать STI для этой ситуации.

1 Ответ

0 голосов
/ 16 декабря 2009

Я могу сделать это с помощью Paperclip.interpolates в инициализаторе.

...