Vorrei modificare direttamente in rails un modello di testo, ad esempio user_notifications.user_watching_first_post.text_body_template.
Qualcuno può aiutarmi a trovare i comandi della console rails per questo? Non sono esperto di rails e non sono riuscito a trovare l’oggetto che li contiene.
Senza guardare attentamente il codice, sono sicuro al 99% che il problema sia dal lato Rails e non dal lato UX, quindi non penso che cambiarlo dal lato Rails risolverà qualcosa. Se hai un budget, posso aiutarti a capire come fare quello che chiedi, ma non prometto che risolverà il tuo problema.
Puoi trovare quelli che hai cambiato con qualcosa del genere:
Non credo che il problema sia dal lato Rails, dato che l’interfaccia utente elenca erroneamente i tag consentiti (quindi quell’elenco è erroneamente codificato in modo fisso da qualche parte) ma %{base_url} viene analizzato correttamente altrimenti (vedi la discussione), cioè con Rails dovrei essere in grado di forzare il salvataggio del valore (aggirando eventuali controlli).
Ma tutto questo è fuori tema, in realtà: la mia domanda originale era solo per un suggerimento su quale oggetto Rails prendere di mira. Se puoi offrire solo aiuto a pagamento, aspetterò sperando che qualcun altro sia disposto a offrire un aiuto gratuito (l’ho fatto in altre discussioni, anche alcuni PR su GitHub). Nessun rancore
Modifica: Hai modificato il tuo post mentre stavo scrivendo. Vedrò fin dove riesco ad arrivare con quello che hai suggerito (non sono sicuro di come adattarlo al mio esempio specifico ancora). TranslationOverride potrebbe essere un suggerimento sufficiente.
È stato un indizio sufficiente e ho anche trovato il bug (che è nel codice ruby):
to=TranslationOverride.where(translation_key:"user_notifications.user_watching_category_or_tag.text_body_template").first
to.value="%{username} ha pubblicato in \"[%{topic_title}](%{base_url}%{url})\"\n\n--\"
to.save!
ActiveRecord::RecordInvalid: Validation failed: The following interpolation key is invalid: 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 è il colpevole… base_url è valido e viene analizzato correttamente (come ho spiegato nel thread collegato). Sembra che io debba o modificare validations.rb (ugh!) o modificare direttamente il database SQL (che è quello che avevo dopo l’aggiornamento)… quindi ora devo trovare dove nel database postgre vivono questi tag di template
p.s. È una correzione così facile e veloce per gli sviluppatori (potrei fare una PR ma conosco solo un sottoinsieme di tag dove %{base_url} manca dai tag validi)
Modifica: La GUI non lo mostra immediatamente (immagino sia la cache di sidekiq). Ho eseguito un ./launcher restart app per questo.
Per completezza:
to=TranslationOverride.where(translation_key:\"user_notifications.user_watching_category_or_tag.text_body_template\").first
to.value=\"%{username} ha pubblicato in \\\"[%{topic_title}](%{base_url}%{url})\\\"\\n\\n--\"
to.save(validate: false)