Remplacer une chaîne de caractères dans tous les messages

Topics.where(category_id: 123).each do |t|
  posts.where(topic_id: t).each do |p|
    p.raw.gsub!("replaceme","/")
    p.save
  end
end
./launcher enter app
rails c
# coller le truc

Vous pourriez faire une sauvegarde d’abord.

2 « J'aime »

Merci Jay, j’apprécie votre temps !

Et j’ai appris à mes dépens à faire une sauvegarde avant de faire quoi que ce soit de sérieux :slight_smile:

Mise à jour : Cela a très bien fonctionné, mais j’ai dû utiliser \n au lieu de /.

Aussi, ce sont Topic et Post dans le code ci-dessus :slight_smile:

Bonne idée de faire un rebake après avoir exécuté cela également. Dans mon cas, c’était pour régénérer les miniatures.

2 « J'aime »

Une publication a été fusionnée dans un sujet existant : Remplacement de contenu dans plusieurs sujets avec des expressions régulières ?](/t/replacing-content-in-multiple-topics-with-regex/294828/7)

Salut @nathank ! Je suis curieux de savoir si tu as trouvé une solution en amont pour cela. Nous rencontrons un problème similaire où nous aimerions (essentiellement) remplacer automatiquement « X » par « Y » chaque fois qu’un utilisateur inclut « X » dans son sujet ou son message.

C’est ce que fait la fonctionnalité de mots surveillés. Elle remplacera les chaînes de caractères lorsque le message sera créé ou modifié.

/admin/customize/watched_words

1 « J'aime »

Merci Jay ! Il semble que cela fonctionnera pour les séquences basées sur des caractères, mais pas pour le formatage non basé sur des caractères tel que les retraits de tabulation.

Cas d’utilisation : nous avons des rédacteurs plus âgés sur notre plateforme qui traitent encore le clavier comme une machine à écrire et appuient 5 fois sur la barre d’espace pour un retrait. D’autres rédacteurs copient et collent avec un retrait de tabulation. Les deux nous laissent avec ce que Discourse interprète comme du balisage. (Si j’utilise le terme correctement.)

J’ai trouvé une solution de contournement du côté du composant thématique où nous avons obtenu le CSS pour remplacer essentiellement le formatage du balisage, dont nous n’avons jamais besoin pour notre cas d’utilisation spécifique.

Santé et merci pour votre aide !

2 « J'aime »