4

Я пытаюсь скопировать аватары из другой модели в мою модель User, но при попытке сделать это получаю ошибку AWS::S3::Errors::NoSuchKey.Paperclip AWS :: S3 :: Ошибки :: Ошибка 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" 

делать заметки, я копирование между двумя различными ковшами (как отмечено в другой код модели модели), так что, возможно, что-то с этим связано?

+0

Кажется, что это всего лишь 404. Вы получаете это за случай, когда вы знаете, что изображение существует? –

+0

@FareeshVijayarangam Да, я знаю, что изображение существует. – Shpigford

+0

@FareeshVijayarangam Если я вхожу в журнал 'old_avatar.avatar', он правильно показывает путь к изображению, которое я пытаюсь скопировать. – Shpigford

ответ

3

Оказывается, у меня были некоторые противоречивые пути для некоторых ранних изображений, поэтому они не соответствовали пути, который я установил для Paperclip (таким образом, был создан неправильный URL-адрес изображения).

Итак, проблема решена.

+0

Кажется, есть проблемы согласованности между маршрутами, созданными Paperclip 3.0.x и 2.x. Если вы обновляете драгоценные камни для живого сайта, может быть хорошей идеей исправить вашу версию скрепки Paperclip. Это может несколько оправдать ваше «решение», но я думаю, что вы не писали противоречивые пути, но новая версия драгоценного камня генерирует пути, отличные от предыдущих. –

+0

Если вы ищете способ исправить ошибку «Нет такого ключа» при запуске задач грабежа скрепки, предоставленных spree, чтобы изменить размер ранее загруженных изображений, это также было очень громким: http://stackoverflow.com/questions/16844281/может-не-бежать-рейк-papercliprefreshthumbnails-класс spreeimage-в-рельсы-SPRE/16844282 # 16844282 – samuelkobe

0

У меня была эта проблема из-за неверного имени, используя :regular вместо :normal. Поскольку не было :regular, это дало мне эту ошибку.

Смежные вопросы