Rails 4 + Paperclip + S3:更改端点以访问用户模型中的S3存储桶?

Rya*_* Yu 14 ruby-on-rails amazon-s3 paperclip

我想,对于这个问题应该是一个非常简单的解决办法,但我似乎无法让它发挥作用.我有一个Rails 4应用程序,一个photograph带有Paperclip属性设置的用户模型,我把它链接到S3.

这是用户模型:

  has_attached_file :photograph,
  :styles => { :medium => "300x300>", :thumb => "100x100>" },
  :storage => :s3,
  :bucket => " my-bucket-name ",
  :default_url => '/images/:attachment/missing_:style.png',
  :s3_credentials => S3_CREDENTIALS
Run Code Online (Sandbox Code Playgroud)

图像被添加到我的S3桶中就好了,但是当我尝试渲染图片时<%= image_tag @user.photograph.url %>,它不会显示出来.经过进一步检查,图片网址为:

http://s3.amazonaws.com/my-bucket-name/users/photographs/000/000/001/original/20121103_132556.jpg?1388619625

如果我在浏览器中关注此URL,我会看到一个XML文件,如下所示:

<Error>
  <Code>PermanentRedirect</Code>
  <Message>
    The bucket you are attempting to access must be addressed using the specified endpoint. Please send all future requests to this endpoint.
  </Message>
  <RequestId> ... </RequestId>
  <Bucket>my-bucket-name</Bucket>
  <HostId>
    ...
  </HostId>
  <Endpoint>my-bucket-name.s3.amazonaws.com</Endpoint>
</Error>
Run Code Online (Sandbox Code Playgroud)

因此,当我http://my-bucket-name.s3.amazonaws.com/actives/photographs/000/000/001/original/20121103_132556.jpg?1388619625在浏览器中关注网址时,我看到图片就好了.

如何更改用户模型中的端点?处理这个问题的正常方法是什么?我必须补充一点,我的S3斗是北加州地区.谢谢.

Rya*_* Yu 24

解决了!刚刚在我的User模型中添加了这两行:

  :url =>':s3_domain_url',
  :path => '/:class/:attachment/:id_partition/:style/:filename',
Run Code Online (Sandbox Code Playgroud)