Я пытаюсь настроить условные версии с несущей в моем приложении Rails. Я реализовал то, что кажется точным дубликатом приведенных примеров here.Rails + carrierwave не создает условные версии
Версия никогда не создается, хотя только мой is_ipod?
просто возвращает true
. Код ниже - это то, что я сейчас имею и не работаю. Обратите внимание на те комментарии, которые я использовал для проверки, что атрибут image_type
действительно установлен правильно.
version :ipod_portrait_thumb, :if => :is_ipod? do
process resize_to_fit: [150,200]
end
def is_ipod? image
model.image_type == 'iPod Screenshot'
#if (model.image_type == "iPod Screenshot")
#if (model.image_type!=nil)
#puts "+++++"+model.image_type
# if (model.image_type=="iPod Screenshot")
#puts "+++++++ I AM HERE"
# return true
# end
#end
end
Если is_ipod?
выглядит следующим образом:
def is_ipod? image
true
end
версия создается, как и ожидалось. Что мне не хватает? Благодаря!
UPDATE:
Я редактировал метод is_ipod?
, чтобы выглядеть следующим образом:
def is_ipod? image
puts (image.path || "") + ': ' + ((model.image_type||"") == 'iPod Screenshot').to_s
model.image_type == 'iPod Screenshot'
end
, который выводит на консоль:
/public/uploads/tmp/20130325-1024-15906-5363/drawing.png: false
/public/uploads/tmp/20130325-1024-15906-5363/drawing.png: false
/public/uploads/app_image/image/59/drawing.png: true
Таким образом, версия пытается будет создан три раза, дважды для файлов temp и один раз для окончательного файла. Атрибут model устанавливается только для окончательного файла. Связано ли это? Может ли кто-нибудь сказать мне, как это отличается от этого примера?
class MyUploader < CarrierWave::Uploader::Base
version :monkey, :if => :is_monkey?
protected
def is_monkey? picture
model.favorite_food == 'banana'
end
end
Вот мой класс модели в случае, который помогает:
class AppImage < ActiveRecord::Base
attr_accessible :app_id, :image, :image_type, :image_cache
belongs_to :app
mount_uploader :image, AppImageUploader
validates :image_type, presence: true
validates :image, presence: true
end
Спасибо!
, который может звучит как глупый вопрос, но вы на 100% уверены, что когда вы делаете свои тесты, model.image_type равен «iPod Screenshot»? С правильным случаем? Потому что это действительно выглядит как условие 'model.image_type == 'iPod Screenshot'' никогда не выполняется, поэтому ваша версия никогда не создавалась – pjam
Я уверен. Обратите внимание на прокомментированные явные тесты, помещающие «Я ЗДЕСЬ» на консоль. Я проверил это. – kbeal