Ruby on rails 如何先将S3 bucket URL更改为bucket,然后再更改URL

Ruby on rails 如何先将S3 bucket URL更改为bucket,然后再更改URL,ruby-on-rails,ruby,amazon-web-services,amazon-s3,Ruby On Rails,Ruby,Amazon Web Services,Amazon S3,我正在使用回形针和aws sdk gems创建rails API应用程序 应用程序将URL保存为字符串。保存的url如下所示 我无法打开上面的图片。这是因为从s3获取时,它的url如下 先看看桶是怎么回事?但是保存在数据库中的url有第二个bucket吗?如何更改已保存的URL以首先获取bucket config/initializers/paperclip.rb Paperclip::Attachment.default_options.update( default_url: "h

我正在使用回形针和aws sdk gems创建rails API应用程序

应用程序将URL保存为字符串。保存的url如下所示

我无法打开上面的图片。这是因为从s3获取时,它的url如下

先看看桶是怎么回事?但是保存在数据库中的url有第二个bucket吗?如何更改已保存的URL以首先获取bucket

config/initializers/paperclip.rb

Paperclip::Attachment.default_options.update(
  default_url: "https://#{Rails.application.secrets.bucket}.s3-ap-southeast-2.amazonaws.com/" \
               "/profiles/avatars/default/missing.jpg")



config/aws.yml

development: &defaults
  access_key_id:     s3_access_key
  secret_access_key: s3 secret key
  s3_region:         ap-southeast-2

test:
  secret_access_key: s3 secret key

staging:
  <<: *defaults
  access_key_id:     s3_access_key
  secret_access_key: <%= ENV["SECRET_KEY_BASE"] %>

production:
  <<: *defaults
  access_key_id:     s3_access_key
  secret_access_key: <%= ENV["SECRET_KEY_BASE"] %>



profile.rb it has the attachment saved

require "base64"
class Profile < ActiveRecord::Base
  belongs_to :user
  validates :user, presence: true

  has_attached_file :avatar, styles: { thumb: "100x100>" }

  validates_attachment_content_type :avatar, content_type: /image/i

  def avatar_url
    avatar && avatar.url
  end

  def avatar_base64=(image_base64)
    file = Paperclip.io_adapters.for(image_base64)
    file.original_filename = file.content_type.sub("image/", "avatar.")
    self.avatar = file
  end
config/initializers/paperclip.rb
回形针::Attachment.default\u options.update(
默认url:“https://{Rails.application.secrets.bucket}.s3-ap-southest-2.amazonaws.com/”\
“/profiles/avatars/default/missing.jpg”)
config/aws.yml
开发:&默认值
访问密钥\u id:s3\u访问密钥
秘密访问密钥:s3秘密密钥
s3_地区:ap-东南-2
测试:
秘密访问密钥:s3秘密密钥
登台:

您可以在
config/initializers/paperclip.rb
中添加默认url,如下所示:

Paperclip::Attachment.default_options[:url] = ':s3_domain_url'
或者您可以直接在环境配置中进行配置,即
config/environments/production.rb

config.paperclip_defaults = {
    storage: :s3,
    url: ':s3_domain_url',
    ...
}
重要的是要注意,
:s3\u domain\u url
是字符串,而不是符号