2012-02-15 6 views
3

Использование Rails 3.2.1 и Paperclip 2.6Rails/Paperclip: Как отображать изображения с S3 с полномочиями authenticated_read?

У меня есть комплект скрепки для использования s3 в качестве хранилища. Я хотел бы использовать :s3_permissions => :authenticated_read.

Перед тем, как скреплять портфолио, чтобы использовать aws-sdk, я использовал драгоценный камень paperclip-aws, который предоставляет помощник для аутентифицированного доступа.

Имеет ли Paperclip аналогичный помощник? Как получить доступ к изображениям через image_tag, если они установлены на authenticated_read в отсутствие драгоценного камня paperclip-aws?

ответ

4

Учитывая вложение сконфигурировано таким образом:

has_attached_file :attachment, 
    :storage => :s3, 
    :bucket => 'MY-BUCKET', 
    :s3_permissions => :authenticated_read, 
    :s3_credentials => Rails.root.join("config/aws.yml") 

Вы можете просто вызвать метод #expiring_url на вашем приложении:

record.attachment.expiring_url #=> "https..." 

Вот сигнатура #expiring_url:

def expiring_url(time = 3600, style_name = default_style) 

Это позволяет вам переопределить срок действия и указать, какой «стиль» или версия вы нужен URL-адрес.

+0

Спасибо! Кстати, у вас отсутствует запятая после ': authenticated_read' в вашем примере конфигурации. – Clay

+0

У меня на самом деле проблема с этим, потому что он не по умолчанию для paperclip ': default_url' для отображения отсутствующих изображений. Он просто возвращает нуль. Мне пришлось написать вспомогательный метод, который бы проверял, возвращает ли ': expiring_url' значение nil и использует обычный метод url, если это произойдет. Вероятно, это ошибка с помощью скрепки. – Clay

Смежные вопросы