お世話になっております。
###前提・実現したいこと
CarrierWaveでVersionを動的に定義したいです。
具体的には、サムネイルのサイズをDBに格納し、Versionで動的にサイズを定義してサムネイルを生成したいです。
DBは
Post - 1:N - ImageType - 1:N - ResizeSize
Post - 1:N - Image
ImageType - 1:N - Image
となっていて、Post(投稿)には複数のImageType(画像種別)が定義されます。
また、ImageTypeには複数のResizeSize(サムネイル)が定義されています。
ImageTypeごとにImage(画像)が投稿されて、そのImageTypeごとにResizeSizeからサイズを取得してサムネイルを生成したいです。
###発生している問題・エラーメッセージ
サムネイルの生成自体はできているのですが、
Image1で定義されているResizeSizeが[100,100]で
Image2で定義されているResizeSizeが[300,300]だった場合、
Image1 [100,100]
Image1 [300,300]
Image2 [100,100]
Image2 [300,300]
と4つのイメージファイルが生成されてしまします。
本当は、
Image1 [100,100]
Image2 [300,300]
のみ生成したいです。
よく理解できていないのですが、Imageモデルに対してImageUploaderクラスが1個しか定義されていないということでしょうか?
###ソースコード
ruby
1# Image.rb 2class Image < ActiveRecord::Base 3 belongs_to :post 4 belongs_to :image_type 5 mount_uploader :image, ImageUploader 6end
ruby
1# image_uplader.rb 2class ImageUploader < CarrierWave::Uploader::Base 3 4 process :thumbnail_size 5 6 def thumbnail_size 7 size = model.resize_sizes.pluck(:width, :height) 8 size.each do |s| 9 self.class.version(s[0]){ process :resize_to_fit => [s[1], s[2]] } 10 end 11 end 12end
###補足情報(言語/FW/ツール等のバージョンなど)
#######ruby -v
ruby 2.2.2p95 (2015-04-13 revision 50295) [x86_64-darwin15]
#######rails -v
Rails 4.2.5
あなたの回答
tips
プレビュー