ruby-on-rails - 如何在 Action Text Rails 6 上以富文本格式验证我的附件?
问题描述
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
如果附件为空,即使我附加图像,我如何检查附件?但是当我content.embeds
在我的视图中使用时,它会显示我的图像。对不起我的英语不好。谢谢。
解决方案
回答下 rich_text_content.body.attachments 创建模型时返回附件,我可以将其用于有效。
推荐阅读
- python - python中forloop中的名称未定义错误
- sql - EF Core 为每个新迁移创建重复的更改
- python-3.x - 在 Python 中使用 Swagger 和 Connexion 获取 utf-8 而不是 \u 转义序列
- swift - SwiftUI .onDelete 从 ForEach 获取 var
- selenium - 如何通过多个文本匹配单击一个元素?
- python - 无法从 azure.storage.blob 导入名称 BlockBlobService
- c++ - 无法将 'wchar_t*' 转换为 'LPCSTR' {aka 'const char*'}
- android - Paging3:在 Room DAO 中使用 PagingSource 作为返回类型时,“不确定如何将游标转换为此方法的返回类型”
- java - JPanel的平滑圆角
- spring-mvc - 无法在 Runnable 或 Spring 控制器中实例化 EWS ExchangeService