2010-01-07 3 views
2

Я с удовольствием использую attachment_fu для обработки загрузки файлов и создания миниатюр. Однако для некоторых (но не всех!) Случаев я хотел бы подавить создание эскизов.Attachment_fu: как я могу выборочно предотвратить создание миниатюр?

Как мне взломать attachment_fu, чтобы сделать это?

Особенности: У меня есть традиционную модель attachment_fu

class Pic < ActiveRecord::Base 
    has_attachment :content_type => :image, :storage => :s3, :resize_to => '200x600>', 
       :thumbnails => { :thumb48 => [48,48], 
            :thumb32 => [32,32], 
            :thumb22 => [22,22] } 
    validates_as_attachment 
end 

Пользователь указывает файл для загрузки в форме, используя входной файл и отправляет форму к действию, где ПИК создается с помощью

@pic = Pic.new(params[:pic]) 

в некоторых случаях я хотел бы быть в состоянии сделать что-то вроде

@pic = Pic.new(params[:pic], {:generate_thumbnails => false}) 

и предотвратить создание эскизов.

ответ

3

интересный вопрос.

Вы задумывались над тем, чтобы не показывать миниатюры для определенных фото? или это проблема хранения?

Другой вариант - создать две модели - одну из которых называется Pic, которая не определяет никаких эскизов, а затем называется PicWithThumbs, которая расширяет класс Pic и определяет миниатюры.

Тогда в контроллере можно выполнить команду «если» заявление, что проверил Params для значения под названием «create_thumbs» (булевы) - если: create_thumbs верно, а затем создать экземпляр PicWithThumb, иначе создать Pic

Я знаю, это немного пахнет, и я немного нуб, поэтому не стесняйтесь стрелять в меня. Мне интересно узнать, какое наилучшее решение есть ...

+0

Полностью разумное предложение, но оно не работает для моего конкретного приложения. Я пытаюсь предоставить миниатюры из другого источника для определенных фото, а не создавать их сначала с использованием метода по умолчанию, а затем перезаписывать их. – brahn

0

Я не уверен в подключении fu, но в paperclip вы можете остановить генерации миниатюр, вернув false в before_post_process, в приложении fu, возможно, вы могли бы сделать аналогичная вещь в обратном вызове process_attachment?

+0

Ох, хорошая идея. Я попробую! – brahn