2016-07-11 13 views
0

に基づいcarrierwaveと異なるイメージのバージョンを作成する例である:列値ここ

APP /モデル/ book.rb

class Advertisement < ActiveRecord::Base 

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

    # ... 

end 

APP /アップローダ/ 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

私はcarrierwaveのreadmeで答えを見つけましたが、まだ返信いただきありがとうございます。 –

+0

ようこそ。 carrierwaveにはすばらしいドキュメントがあります – neydroid