なんとなく日々徒然と

carrierwaveのリンクの有効期間を個別に設定

全体でかける場合はこうですかね。

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
# config/initializers/carrierwave.rb
CarrierWave::SanitizedFile.sanitize_regexp = /[^[:word:]\.\-\+]/ # for Japanese
CarrierWave.configure do |config|
  config.fog_credentials = {
    provider:              'AWS',
    aws_access_key_id:     ENV[:access_key],
    aws_secret_access_key: ENV[:secret],
    region:                ENV['s3_region']
  }

  config.fog_public = false
  config.fog_directory = Settings.aws['s3_bucket']
  config.cache_storage = :fog
  config.fog_authenticated_url_expiration = 1.minutes.to_i
end

個々のアップローダークラスでかける場合

1
2
3
4
5
class ImageUploader < CarrierWave::Uploader::Base  
  def fog_authenticated_url_expiration  
    1.minutes.to_i  
  end  
end  

uploader内ではmodelでモデル側のインスタンスを参照できるのでmodel側の条件で動的に有効期限を変えるとかもできそうですね。