Carrierwave обновляет аватар пользователя без отправки аватара в параметрах - PullRequest
0 голосов
/ 09 января 2019

У меня есть приложение внешнего интерфейса и серверная часть рельсов. У меня есть AvatarUploader на сервере для загрузки файлов, и когда я отправляю файл из пользовательского интерфейса, он прекрасно загружает файл. Однако, когда я не отправляю файл из формы обновления учетной записи, аватар пользователя обновляется. Я могу подтвердить, что я не отправляю изображение из формы:

puts params
{..., "avatar"=>nil, ... }
но в логах я вижу sql ОБНОВЛЕНИЕ
UPDATE "users" SET "avatar" = $1, "updated_at" = $2 WHERE "users"."id" = $3  [["avatar", "a36ed6b7-c207-44e8-9e93-6cfc3eaeed86.jpg"], ["updated_at", "2019-01-08 23:18:50.140517"], ["id", 4]]

Это мой AvatarUploader

class AvatarUploader < CarrierWave::Uploader::Base
  include CarrierWave::MiniMagick

  version :avatar_m do
    process resize_to_fill: [226, 150]
  end

  version :avatar_s, from_version: :avatar do
    process resize_to_fill: [48, 48]
  end

  def store_dir
    "#{env_path}/#{model.class.to_s.underscore}/#{mounted_as}/#{model.id}"
  end

  def extension_whitelist
    %w(jpg jpeg gif png)
  end

  def size_range
    1..10.megabytes
  end

  def default_url(*args)
    "/images/fallback/" + [version_name, "default.png"].compact.join('_')
  end

  def filename
    "#{secure_token}.#{file.extension}" if original_filename.present?
  end

  private

  def env_path
    env = Rails.env.test? ? "/spec" : ""
    "uploads#{env}"
  end

  def secure_token
    var = :"@#{mounted_as}_secure_token"
    model.instance_variable_get(var) || model.instance_variable_set(var, SecureRandom.uuid)
  end
end
Я так растерялся ... Carrierrwave обновляет модель, когда вы не отправляете ей файл по запросу на обновление?
...