Как создать версию файла с другим именем (carrierwave)? - PullRequest
0 голосов
/ 13 июня 2019

Когда я меняю миниатюру аватара, имя файла не меняется и браузер выдает старую версию фотографии. Чтобы этого избежать, необходимо постоянно сбрасывать кеш. В качестве выхода из этой ситуации я думаю каждый раз создавать новую версию обрезанной фотографии с новым именем. Но если я задаю уникальное имя для обрезанной версии, то по какой-то причине аватар не загружается на сервер

Я пытался добавить full_filename метод в блок версии:

version :preview do
  process :crop
  process resize_to_fit: [150, 150]
  def full_filename(for_file = model.avatar.file)
    token = SecureRandom.base58(8)
    "#{token}.jpg"
  end
end

Также я добавил save! после recreate_versions! в метод, где я обрезал аватар:

def crop_avatar
  if crop_x.present?
    avatar.recreate_versions!
    self.crop_x = nil
    save!
  end
end

Это не работает. Аватар не загружается на сервер.

Но если я указываю статическое имя в имени файла вместо токена, то все работает правильно:

version :preview do
  process :crop
  process resize_to_fit: [150, 150]
  def full_filename(for_file = model.avatar.file)
    "something.jpg"
  end
end

Итак, как мне установить уникальные значения для каждой версии аватара?

...