# Plugin pour valider la valeur d'un champ personnalisé de type texte

**URL:** <https://meta.discourse.org/t/plugin-to-validate-a-text-type-custom-field-value/325534>\
**Category:** Development\
**Created:** [Septembre 8, 2024, 7:36 UTC](https://meta.discourse.org/t/plugin-to-validate-a-text-type-custom-field-value/325534 "2024-09-08T19:36:29Z")\
**Posts on this page:** 1\
**Showing post:** 1

<div class="post-metadata">

**Author:** ![omegerard](https://avatars.discourse-cdn.com/v4/letter/o/f9ae1b/32.png) [@omegerard](https://meta.discourse.org/u/omegerard)\
**Post date:** [Septembre 8, 2024, 7:36 UTC](https://meta.discourse.org/t/plugin-to-validate-a-text-type-custom-field-value/325534/1 "2024-09-08T19:36:30Z")

</div>

J’ai un champ personnalisé pour l’utilisateur afin de stocker l’identifiant du projet dont l’utilisateur est membre.

Objectif : un utilisateur qui saisit un identifiant de projet valide (payant) a accès à des catégories de contenu enrichies.

Vérifier si l’identifiant de projet saisi par l’utilisateur correspond à un identifiant de projet existant est assez facile :

```plaintext
# Définir la méthode pour vérifier le champ personnalisé
def validate_projectid_customfield
  # Clé du champ personnalisé et liste prédéfinie
  custom_field_key = 'projectid'
  predefined_list = ["558", "963", "819"]

  # Obtenir la valeur du champ personnalisé de l'utilisateur
  user_field_value = self.custom_fields[custom_field_key]

  # Si la valeur n'est pas dans la liste prédéfinie, lever une erreur
  if !user_field_value.nil? && !user_field_value.empty?
    unless predefined_list.include?(user_field_value)
      # Lever une erreur de validation que Discourse comprendra
      QUE FAIRE ICI ?
    end
  end
end

```

Pour le moment, j’ai le code suivant à la place de ‘QUE FAIRE ICI ?’

```plaintext
self.errors.add(:base, I18n.t("user.project.invalid_value"))
raise ActiveRecord::RecordInvalid.new(self)

```

Mais cela ne semble pas fonctionner.

Si je prends la page de profil et que je saisis une valeur (correcte ou incorrecte), le système réagit d’abord par “Sauvegardé !” immédiatement suivi de “500 Internal Server Error”.

Peut-être que tout cela est dû au mauvais code au début ?

```plaintext
after_initialize do
  add_model_callback(User, :before_save) do
    validate_projectid_customfield
  end
end

```

Quelqu’un peut-il m’aider ou m’orienter vers la bonne documentation ?

Merci !

---

_[View the full topic](https://meta.discourse.org/t/plugin-to-validate-a-text-type-custom-field-value/325534)._
