2016-07-11 2 views
0

Вот пример:создавать различные версии изображения с carrierwave на основе значения столбца

приложение/модели/book.rb

class Advertisement < ActiveRecord::Base 

    enum kind: { magazine: 0, newspaper: 1 } 
    mount_uploader :main_pic, BookMainPicUploader 

    # ... 

end 

приложение/закачивающие/book_main_pic_uploader.rb

class BookMainPicUploader < CarrierWave::Uploader::Base 
    include CarrierWave::MiniMagick 

    storage :fog 

    def store_dir 
    "uploads/featured/#{mounted_as}/#{model.id}" 
    end 

    def extension_white_list 
    %w(jpg jpeg gif png) 
    end 

    version :normal do 
    process resize_to_fill: [800, 400] 
    end 

    version :square do 
    process resize_to_fill: [400, 400] 
    end 

end 

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

Можно ли достичь?

ответ

0

Вам необходимо перейти на version метод if условный вариант.

class BookMainPicUploader < CarrierWave::Uploader::Base 
    include CarrierWave::MiniMagick 

    storage :fog 

    def store_dir 
    "uploads/featured/#{mounted_as}/#{model.id}" 
    end 

    def extension_white_list 
    %w(jpg jpeg gif png) 
    end 

    version :normal, if: :is_magazine? do 
    process resize_to_fill: [800, 400] 
    end 

    version :square, if: :is_newspaper? do 
    process resize_to_fill: [400, 400] 
    end 

    private 

    def is_magazine? picture 
    model.magazine? 
    end 

    def is_newspaper? picture 
    model.newspaper? 
    end 

end 
+0

Я только что нашел ответ в readmakerwave, но все же благодарю вас за ответ. –

+0

добро пожаловать! У несущей есть отличные документы – neydroid

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