[RUBY] Message de validation de processus avec Decorator

Notez que je voulais traiter le message de validation après qu'il ait été généré selon le modèle d'entrée du formulaire en raison de circonstances malheureuses. Par exemple, supposons que vous ayez le formulaire suivant.

new.slim


= form_for post_form, url: confirm_post_path do |f|
  - if post_form.errors.present?
    ul
      - post_form.errors.full_messages.each do |msg| 
        li = msg

Cependant, supposons que vous ayez ajouté l'exigence de modifier le message de validation si vous choisissez une option particulière dans le formulaire. Dans ce cas, errors.full_messages est un tableau, j'ai donc vérifié le contenu un par un avec Decorator et l'ai remplacé par la force brute.

new.slim


= form_for post_form, url: confirm_post_path do |f|
  - post_form_decorator = ::PostFormDecorator.new(f.object)
  - if post_form.errors.present?
    ul
      - post_form_decorator.post_error_display(post_form.errors.full_messages).each do |msg|
        li = msg

post_form_decorator.rb


class PostFormDecorator
  delegate_missing_to :@post_form

  def initialize(post_form)
    @post_form = post_form
  end

  def post_error_display(error_full_messages)
    error_full_messages.each do |msg|
      if @post_form.category == 'music'
        msg.gsub!(/#{@post_form.model.class.human_attribute_name(:author)}/, 'chanteur')
      end
    end
  end
end

Notez que le contenu est remplacé par une méthode destructive, il ne sera donc pas remplacé par gsub sauf si vous ajoutez un "!".

Recommended Posts

Message de validation de processus avec Decorator
Validation de JSON avec le schéma JSON
Validation personnalisée avec Spring
[macOS] Traiter l'action cible avec la combinaison
Validation des messages du journal à l'aide de mockito
Obtenez des résultats de validation avec Spring Boot
Ajouter une validation de bean avec Micronaut (Java)
Contrôle d'entrée facile avec Bean Validation!
Communication de processus utilisant AMQP avec RabbitMQ