class CoverUploader < CarrierWave::Uploader::Base

  if RbConfig::CONFIG["target_os"] =~ /mswin|mingw|cygwin/i
    include CarrierWave::MiniMagick
  else
    include CarrierWave::RMagick
  end

  storage :file

  def filename
    "#{secure_token}.#{file.extension}" if original_filename.present?
  end

  def store_dir
    "uploads/posts/#{model.slug}"
  end

  version :large do
    process resize_to_limit: [1200, 630]
  end

  version :medium do
    process resize_to_limit: [600, 320]
  end

  protected

  def secure_token(length=16)
    var = :"@img_slug"
    model.instance_variable_get(var) or model.instance_variable_set(var, SecureRandom.hex(length/2))
  end

  def img_slug
    model.img_slug ||= SecureRandom.hex(6)
  end

end