【发布时间】:2013-06-07 09:31:02
【问题描述】:
我正在尝试将不同模型中的头像复制到我的User 模型中,但是当我尝试这样做时却收到了AWS::S3::Errors::NoSuchKey 错误。
这是引发错误的代码:
old_avatar = OldAvatar.find(1)
user = User.find(old_avatar.user_id)
user.avatar = old_avatar.avatar
user.save
user.avatar = old_avatar.avatar 行是抛出它的原因。
这是我的OldAvatar 模型...
has_attached_file :avatar,
:styles => {
:t => '20x20#',
:s => '40x40#',
:m => '50x50#',
:b => '80x80#',
:f => '100x100#'
},
:storage => :s3,
:s3_credentials => {
:access_key_id => APP_CONFIG['s3_access_key_id'],
:secret_access_key => APP_CONFIG['s3_secret_access_key']
},
:path => ":attachment/:id/:basename:normalized_style.:extension",
:url => "/:attachment/:id/:basename:normalized_style.:extension",
:bucket => "old_bucket"
这是我的User 模型...
has_attached_file :avatar,
:styles => {
:t => '20x20#',
:s => '40x40#',
:m => '50x50#',
:b => '80x80#',
:f => '100x100#'
},
:storage => :s3,
:s3_credentials => {
:access_key_id => APP_CONFIG['s3_access_key_id'],
:secret_access_key => APP_CONFIG['s3_secret_access_key']
},
:bucket => "new_bucket",
:path => ":attachment/:id_partition/:basename_:style.:extension",
:url => "/:attachment/:id_partition/:basename_:style.:extension"
请注意,我在两个不同的存储桶之间进行复制(如不同模型模型代码中所述),所以这可能与它有关吗?
【问题讨论】:
-
看起来它只是一个 404。如果您知道图像存在这一事实,您是否会得到这个?
-
@FareeshVijayarangam 是的,我知道该图像存在。
-
@FareeshVijayarangam 如果我登录
old_avatar.avatar,它会正确显示我要复制的图像的路径。 -
我猜在这种情况下问题出在分配的左侧,这可能只意味着将 anything 分配给
user.avatar存在问题。如果您尝试手动分配user.avatar是否有效?如果不是,则可能与您链接的代码中User模型的最后两行有关,即路径/URL 参数不起作用。"new_bucket"存在吗? -
我想您最好的选择是编写一些代码,将 1 行分配转换为您所指的手动过程。在模型之间复制时,宝石可能在某个地方搞砸了。
标签: ruby-on-rails ruby-on-rails-3 amazon-s3 amazon-web-services paperclip