缺少必需的选项:名称

Ste*_*son 6 ruby-on-rails amazon-s3 carrierwave

我正在尝试设置 AWS 和carrierwave 从我的网站上传图片。但是,当我尝试上传/更新帖子时,我不断收到错误消息“缺少必需的选项:名称”。我按照教程设置了我的 S3 帐户并设置了carrierwave.rb。如果您有任何想法,请告诉我!

载波

CarrierWave.configure do |config|
 config.storage    = :aws
 config.aws_bucket = ENV['S3_BUCKET_NAME']
 config.aws_acl    = 'public-read'
 config.aws_authenticated_url_expiration = 60 * 60 * 24 * 7
 config.aws_attributes = {
   expires: 1.week.from_now.httpdate,
   cache_control: 'max-age=604800'
 }

 config.aws_credentials = {
   access_key_id:     ENV['AWS_ACCESS_KEY_ID'],
   secret_access_key: ENV['AWS_SECRET_ACCESS_KEY'],
   region:            ENV['AWS_REGION']
 }
end
Run Code Online (Sandbox Code Playgroud)

.env 示例

S3_BUCKET_NAME=*****
AWS_ACCESS_KEY_ID=*****
AWS_SECRET_ACCESS_KEY=*****
AWS_REGION=*****
Run Code Online (Sandbox Code Playgroud)

投资组合_上传者.rb

class PortfolioUploader < CarrierWave::Uploader::Base

  storage :aws

  def store_dir
    "uploads/#{model.class.to_s.underscore}/#{mounted_as}/#{model.id}"
  end

  def extension_white_list
    %w(jpg jpeg gif png)
  end
end
Run Code Online (Sandbox Code Playgroud)

Pre*_*ays 14

我也遇到了这个问题。该错误消息具有欺骗性。我发现这实际上是config.aws_bucket = ENV['S3_BUCKET_NAME']导致问题的线路。如果config.aws_bucketnil(例如当未设置时,您将在控制台中ENV['S3_BUCKET_NAME']得到欺骗性的信息。missing required option :name