有没有办法在 Rails 6 中禁用动作文本的图像/附件部分?
Posted
技术标签:
【中文标题】有没有办法在 Rails 6 中禁用动作文本的图像/附件部分?【英文标题】:Is there any way to disable image/attachment part for action text in Rails 6? 【发布时间】:2020-09-04 20:53:15 【问题描述】:我们有办法禁用操作文本的附件吗?像下面的东西 has_rich_text :content, attachment: false
这样,我们可以从 db 中删除 active_storage_blob、active_storage_attachments 表。在这种情况下,只有 action_text_rich_texts 表才能满足目的。
【问题讨论】:
你找到解决方案了吗? 如果有请分享 我设法禁用了仅使用 css .trix-button-group.trix-button-group--file-tools 显示:无; 所以它不可能从后端做到这一点? 【参考方案1】:绝对!
-
将此添加到您的 application.js 以阻止附件:
window.addEventListener("trix-file-accept", function(event)
event.preventDefault()
alert("File attachment not supported!")
)
-
隐藏 css 附件按钮 - 在 application.scss 中添加:
.trix-button-group--file-tools display: none !important;
更重要的是,这是在真实应用程序中完成的提交(前 2 个文件):
https://github.com/yshmarov/pikaburuby/commit/77aaa3e072de943470e4bd2c2b3512727c30232d
【讨论】:
嗨 Yshmarov,这将隐藏视图中富文本编辑器面板中的附件按钮。但是我们如何从后端也限制这一点,我们如何从数据库中删除不必要的表(例如:active_storage_attachments、active_storage_blobs),因为它们不应该是必需的。但是,如果我们删除它,它仍然会出错。在保存对象期间。这意味着即使我们不添加任何附件,它仍然在内部被使用。有什么办法可以摆脱吗? 嗨@Ramyani,你找到办法了吗? @Ramyani - github.com/igorkasyanchuk/active_storage_validations 这个宝石验证附件也可以提供帮助【参考方案2】:我写了一个custom validator,可以用于后端部分:
class NoAttachmentsValidator < ActiveModel::EachValidator
def validate_each(record, attribute, value)
if value.body.attachments.any?
record.errors[attribute] << I18n.t('errors.messages.attachments_not_allowed')
end
end
end
您可以将此代码保存到名为 no_attachments_validator.rb 的文件中,然后在您的模型中使用它,如下所示:
validates :content, no_attachments: true
这与 Yshmarov 提出的前端修改相结合,效果相当好。
【讨论】:
以上是关于有没有办法在 Rails 6 中禁用动作文本的图像/附件部分?的主要内容,如果未能解决你的问题,请参考以下文章