В общем не могу найти способ проверки прикрепляемых файлов. Использую 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?