ruby 1.9.2 лямбда со скрепкой - PullRequest
4 голосов
/ 11 мая 2011

Я обновляю свое рабочее приложение до 1.9.2, но не могу найти ответ на следующий вопрос:

Я создаю Актив, подобный так в моем контроллере:

@asset = Asset.new(params)

изатем в моей модели используйте лямбду для динамического генерирования стилей, например, так:

has_attached_file :asset,
  :styles => lambda { |attachment| attachment.instance.choose_styles}

Затем я проверяю определенное значение, которое было в моих параметрах, например:

def choose_styles
  if self.item_name == 'Car'
    { :small => ["200x200>"], :medium => ["400x400>"], :large => ["700x700>"], :full_screen => ["1000x700>"] }
  else
    ........
 end

Проблема в том,item_name имеет значение nil в 1.9.2 до тех пор, пока это не будет выполнено, а затем, похоже, будет установлено из params.Это все работает, переключаясь обратно на 1.8.7

Может ли кто-нибудь что-нибудь увидеть, чтобы помочь мне, пожалуйста ??

спасибо Рик

1 Ответ

0 голосов
/ 28 мая 2011

Я знаю, что это не тот ответ, который соответствует вашему вопросу. Кстати, вы можете переключиться на carrierwave (https://github.com/jnicklas/carrierwave).. Вы можете выбирать форматы более детально, создавая различные версии и вкладывая их.

Как пример, ipotetic AssetUploader может быть:

...
version :thumb_200x200 do
  process :resize_to_fill => [200,200]
end

version :big_600x600 do
  ...
end
...
version :car, :if => in_category(:car)?
  version :thumb_200x200
  version :another_etc
end
...
protected
  def in_category?(name)
    model.item_name.downcase == name.to_s
  end
...

это всего лишь пример кода, отрегулируйте его под свои нужды;)

ура, А.

...