Активное хранилище, сохраняющее вложение даже после ошибки - PullRequest
1 голос
/ 10 марта 2019

Есть предложения на этот счет?

partner.rb

LOGO_VALIDATIONS = {
  max_size: 2.megabytes
}

has_one_attached :logo
validate :validate_logo_attachment

def validate_logo_attachment
  if logo.attached? && logo.blob.byte_size > LOGO_VALIDATIONS[:max_size]
    errors.add(:logo, 'must be less than 2 Mb')
  end
end

partners_controller.rb

def change_logo
  @current_partner.logo.purge
  @current_partner.logo.attach(change_logo_params[:logo])
  render_error(@current_partner.errors.full_messages) && return unless @current_partner.valid?
  @current_partner.save!
  render_success({logo_url: @current_partner.logo_url})
end

Когда я пытаюсь изменить изображение логотипа размером более 2 Мб, появляется следующая ожидаемая ошибка.

{
    "result": "failed",
    "messages": [
        "Logo must be less than 2 Mb"
    ]
}

Но когда я проверяю изображение по rails_blob_path(@current_partner.logo, disposition: "attachment", only_path: true), я получаю новое изображение логотипа.

...