Примените процессор со скрепкой, если условие верно - PullRequest
4 голосов
/ 21 декабря 2011

У меня есть модель с скрепкой рубиновым камнем. Я определил прикрепленный файл с 2 процессорами (thumbnail и watermark).

Вопрос в том, существует ли способ применения процессора водяных знаков, если условие true. (идея, что это не определение новых прилагаемых файлов без процессора водяных знаков)

Заранее спасибо.

Я пытаюсь использовать этот код, но он не работает. Если поле eid существует, обработайте его водяным знаком, в противном случае - только null. Thumbnail

:processors => lambda { |a|
                if a.eid.nil?
                        [:thumbnail,:watermark]
                else
                        [:thumbnail]
                end
                },

Ответы [ 2 ]

6 голосов
/ 21 декабря 2011

Опция processors может принимать proc , поэтому вы можете сделать так, чтобы ваши процессоры зависели от экземпляра:

:processors => lambda{ |attachment|
   attachment.instance.some_method_to_get_processors_here
},
4 голосов
/ 24 января 2014

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

class User < ActiveRecord::Base
  has_attached_file :avatar, :styles => lambda { |attachment| { :thumb =>   
    (attachment.instance.boss? ? "300x300>" : "100x100>") } }
end

С attachment.instance является экземпляром вашей модели. Но процессорам передается сам экземпляр:

class User < ActiveRecord::Base
  has_attached_file :avatar, :processors => lambda { |instance| instance.processors }
  attr_accessor :watermark
end

Этот последний пример работал на меня. У меня было User#processors вернуть массив процессоров (но если вы просто хотите процессор по умолчанию, верните [:thumbnail], а не пустой массив).

...