13 votes

Existe-t-il un moyen de désactiver la partie image/attachement pour le texte de l'action dans Rails 6 ?

Existe-t-il un moyen de désactiver les pièces jointes pour le texte d'action ? quelque chose comme ci-dessous has_rich_text :content, attachment : false

Ainsi, nous pouvons supprimer les tables active_storage_blobs, active_storage_attachments de la base de données. Seule la table action_text_rich_texts devrait répondre à l'objectif dans ce cas.

14voto

Yaro Shm Points 112

Absolument !

  1. ajoutez ceci à votre application.js pour bloquer les pièces jointes :

    window.addEventListener("trix-file-accept", function(event) {
      event.preventDefault()
      alert("File attachment not supported!")
    })
  2. cacher le bouton d'attachement css - ajouter ceci dans application.scss :

    .trix-button-group--file-tools { display: none !important; }

De plus, voici un commit où cela est fait dans une application réelle (les 2 premiers fichiers) :

https://github.com/yshmarov/pikaburuby/commit/77aaa3e072de943470e4bd2c2b3512727c30232d

7voto

Carlo Beltrame Points 278

J'ai écrit un validateur personnalisé qui peut être utilisé pour la partie backend :

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

Vous pouvez enregistrer ce code dans un fichier appelé no_attachments_validator.rb, puis l'utiliser dans vos modèles comme suit :

validates :content, no_attachments: true

Cela fonctionne raisonnablement bien en combinaison avec les modifications frontales proposées par Yshmarov.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X