@AndreyBuyback
Разбираю Руби и Рельсы, учусь.

Как проверить размер, тип, и количество, прикрепляемых файлов на стороне сервера используя Rails Action Text?

В общем не могу найти способ проверки прикрепляемых файлов. Использую Action Text, в него входят Trix редактор и Active Storage для сохранения файлов.
class Post < ApplicationRecord
    has_rich_text :content

    validates :content, presence: true
    validate :content_length
    validate :content_embeds

    def content_embeds
       if content.embeds.any?
           errors.add(:content, 'Нельзя загружать более 4 изображений') if content.embeds.size > 4
           content.embeds.each do |attach|
               errors.add(:content, 'Изображение не может весить > 10 мБ') if attach.byte_size > 1242880
               errors.add(:content, 'Можно загружать только изображения') unless attach.image? 
               errors.add(:content, 'Недопустимый формат изображения') unless attach.content_type == 'image/jpeg' || attach.content_type == 'image/png'
            end
        end
    end 

    def content_length 
        max_length = 50
        symbol_size = 0

        if content.embeds.any? 
           content.embeds.each do |attach|
              symbol_size += (attach.filename.size + 2)
           end
        end

        errors.add(:content, 'Слишком длинный текст') if (content.to_plain_text.size - symbol_size) > max_length  
        content.embeds.each { |attach| puts "ATTACH #{attach}"}
    end

Все эти методы работают в представлении, когда просматриваю уже сохраненные файлы, но при создании модели, пишет что content.embeds not exist, ну то есть прикрепляемые к тексту файлы не существуют. На стороне клиента, проверка реализована на js и она работает. Как быть? Может кто нибудь работал с Action Text?
  • Вопрос задан
  • 344 просмотра
Решения вопроса 1
@AndreyBuyback Автор вопроса
Разбираю Руби и Рельсы, учусь.
В общем немного покопался в исходниках, было все просто:
rich_text_content.body.attachments
возвращает прикрепляемые файлы при создании модели, ну а дальше делай с этим чо хош)
Ссылка на исходники рельсов
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
nikolaokonesh
@nikolaokonesh
Не курю не пью
Может не по сути, но в embeds по моему не только изображения могут прикрепляться, но и другие форматы, не?
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы