【发布时间】:2014-01-18 23:41:30
【问题描述】:
我有一个 Active 模型(您可以将 Active 视为用户),它具有 Devise 的身份验证设置。我正在尝试将photograph 属性添加到我的Active 模型并能够使用S3 上传图片。
迁移:
class AddAttachmentPhotographToActives < ActiveRecord::Migration
def self.up
change_table :actives do |t|
t.attachment :photograph
end
end
def self.down
drop_attached_file :actives, :photograph
end
end
活动模型:
...
has_attached_file :photograph,
:styles => { :medium => "300x300>", :thumb => "100x100>" },
:storage => :s3,
:default_url => '/images/:attachment/missing_:style.png',
:path => "users/:id/photograph/:style.:extension",
:bucket => ... ,
:s3_credentials => {
:access_key_id => " ... ",
:secret_access_key => " ... "
}
config/environments/production.rb 和 config/environments/development.rb 都有以下内容:
config.paperclip_defaults = {
:storage => :s3,
:s3_credentials => {
:bucket => ENV[' ... '],
:access_key_id => ENV[' ... '],
:secret_access_key => ENV[' ... ']
}
}
我有用于在views/devise/registrations/edit.html.erb 中上传图片的表单,如下所示:<%= f.file_field :photograph %>。但是,在我使用此表单选择并更新 Active 后(更新成功),我的图像的路径(使用 <%= image_tag @active.photograph.url %> 生成)是:
http://localhost:3000/images/photographs/missing_original.png
而不是 S3 地址。
另请注意,我正在使用以下宝石:
gem "paperclip", "~> 3.0"
gem 'aws-sdk'
我以前从未使用过 S3,但是在我选择要上传的图像并在我的更新页面上点击“输入”后,我在 Amazon 门户上的 S3 存储桶仍然是空的,因此更新没有通过。
我没有正确设置吗?
【问题讨论】:
标签: ruby-on-rails devise amazon-s3 paperclip