Ajuda com o console Rails para editar template de texto

Gostaria de editar diretamente no Rails um template de texto, digamos user_notifications.user_watching_first_post.text_body_template.

Alguém poderia me indicar os comandos do console do Rails para isso? Não sou experiente em Rails e não consegui encontrar o objeto que contém esses templates.

1 curtida

(Não sei como fazer isso de imediato). Que problema isso está resolvendo? Por que não fazer isso a partir da UX ou da API?

1 curtida

Relacionado ao outro tópico dele: 3.2.x still ignores some custom email templates.

Parece que as modificações de template estão sendo ignoradas.

Você tem certeza de que está editando para o idioma desejado?

1 curtida

Sim, embora esteja mais relacionado a este problema

A GUI para modelos é muito instável, então eu gostaria de resolvê-la de alguma forma.

1 curtida

Sem olhar atentamente para o código, tenho 99% de certeza de que o problema está no lado do Rails e não no lado do UX, então não acho que mudar no lado do Rails vá resolver alguma coisa. Se você tiver um orçamento, posso ajudar a descobrir como fazer o que você pede, mas não prometo que isso resolverá seu problema.

Você pode encontrar os que você alterou com algo como isto:

TranslationOverride.all.pluck(:id, :translation_key)

E então atualizá-los com algo como

to=TranslationOverride.find(1)
to.value="Meu novo valor para o override"
to.save

Não prometo que isso funcionará ou não piorará as coisas. Mas, no pior dos casos, você poderá desfazer suas alterações do UX.

Não acho que o problema seja do lado do Rails, já que a interface lista incorretamente as tags permitidas (então essa lista está incorretamente codificada em algum lugar), mas o %{base_url} é analisado corretamente de outra forma (veja a thread), ou seja, com o Rails eu deveria ser capaz de forçar o salvamento do valor (contornando quaisquer verificações).

Mas tudo isso é irrelevante, na verdade: minha pergunta original era apenas para uma indicação de qual objeto do Rails abordar. Se você só pode oferecer ajuda paga, então esperarei, esperando que outra pessoa esteja disposta a oferecer alguma ajuda gratuita (fiz isso em outras threads, também alguns PRs do GitHub). Sem ressentimentos :slight_smile:

Edição: Você editou sua postagem enquanto eu estava digitando. Verificarei até onde consigo chegar com o que você sugeriu (ainda não tenho certeza de como adaptar isso para o meu exemplo específico). TranslationOverride pode ser uma dica suficiente.

1 curtida

Foi suficiente como um indicador, e eu também encontrei o bug (que está no código ruby):

to=TranslationOverride.where(translation_key:\"user_notifications.user_watching_category_or_tag.text_body_template\").first
to.value=\"%{username} postou em \\\"[%{topic_title}](%{base_url}%{url})\\\"\\n\\n--\"
to.save!
ActiveRecord::RecordInvalid: Falha na validação: A seguinte chave de interpolação é inválida: base_url
from /var/www/discourse/vendor/bundle/ruby/3.2.0/gems/activerecord-7.0.8/lib/active_record/validations.rb:80:in `raise_validation_error'

validations.rb é o culpado … base_url é válido e é analisado corretamente (como expliquei no tópico vinculado). Parece que preciso hackear validations.rb (ugh!) ou editar diretamente o banco de dados SQL (que é o que eu tinha após a atualização) … então agora preciso encontrar onde no banco de dados postgre essas tags de template vivem :frowning:

p.s. É uma correção tão fácil e rápida para os desenvolvedores (eu poderia fazer um PR, mas só conheço um subconjunto de tags onde %{base_url} está faltando nas tags válidas)

1 curtida

Na verdade:

to.save(validate: false)

… funcionou perfeitamente.

Editar: A GUI não mostra imediatamente (acho que é o cache do sidekiq). Fiz um ./launcher restart app para isso.

Para completar:

to=TranslationOverride.where(translation_key:\"user_notifications.user_watching_category_or_tag.text_body_template\").first
to.value=\"%{username} postou em \\\"[%{topic_title}](%{base_url}%{url})\\\"\\n\\n--\"
to.save(validate: false)
2 curtidas

This topic was automatically closed 30 days after the last reply. New replies are no longer allowed.