как проверить размер PDF в рельсах 6 с помощью активного хранилища? - PullRequest
0 голосов
/ 07 августа 2020

Привет всем, я новичок в рельсах, я пытаюсь загрузить PDF-файл, и я использую функцию создания и проверки только для приема PDF-файлов, но мне нужно принимать только файлы, размер которых меньше или равен 1 МБ .iam, используя рельсы 6 с активным хранилищем

мой контроллер:

class Pdf < ApplicationRecord
  after_commit :attachment1
  #after_commit(on: %i[ create update ]) { attachment_changes.delete(name.to_s).try(:upload) }
  before_commit :check_file_type 



    has_one_attached :attachment

  validate :check_file_type , :size_validation1

    #validates :attachment, presence: true, blob: { content_type: ['application/pdf']   }
  #validates :attachment, presence: true, size: { less_than: 1.megabytes , message: 'PDF should be less than 1MB' }

  validates :attachment,
            content_type: [:pdf],
            size: { less_than: 1.megabytes , message: 'must be less than 2MB in size' }



  def attachment1
    attachment_path = "#{Dir.tmpdir}/#{attachment.filename}"
      File.open(attachment_path, 'wb') do |file|
      file.write(attachment.download)
  end

  def size_validation
    if attachment.attached? && attachment.byte_size > 1000000
      errors.add(:attachment, 'PDF must be less than 1MB')
    end
  end
   

  private

    def check_file_type
      if attachment.attached? && !attachment.content_type.in?(%w(application/pdf))
          errors.add(:attachment, 'Must be a PDF or a DOC file')
      end
    end

    def size_validation1
    errors[:attachment] << "should be less than  1 mb" if attachment.size > <1000000>
    end

  end

end
...