Créé le 09 Dec 2022 - Mis à jour le 04 Jul 2023 - Créé par Fabien Berthoux - rubyenums
Un Enum, ou énumération, est un type de données qui représente une liste finie des valeurs possibles. Lorsque vous déclarez un Enum, vous définissez un ensemble de constantes associées à un type de données. En Ruby, vous pouvez facilement implémenter un Enum en utilisant le module Ruby Module pour définir une classe avec des constantes statiques. Une fois que votre classe est définie, vous pouvez utiliser la syntaxe .constant pour accéder aux valeurs des constantes. Vous pouvez également utiliser la méthode de type? pour vérifier le type d'une valeur donnée.
Pour implémenter un Enum en Ruby, vous devez d'abord créer une classe Enum. Dans cette classe, vous définissez des constantes pour chaque valeur possibles. Une fois que votre classe est définie, vous pouvez utiliser la méthode .constant sur votre objet Enum pour récupérer la valeur associée à l'une des constantes. Vous pouvez également utiliser la méthode de type? pour vérifier le type d'une valeur donnée.
Par exemple, vous pouvez créer une classe Enum avec les constantes suivantes :
class Enum
UPPERCASE = 'uppercase'
LOWERCASE = 'lowercase'
MIXEDCASE = 'mixedcase'
end
Vous pouvez ensuite utiliser la méthode .constant pour récupérer la valeur associée à l'une des constantes :
Enum.const_get('UPPERCASE') # =>> 'uppercase'
Vous pouvez également utiliser la méthode de type? pour vérifier le type d'une valeur donnée :
Enum.const_get('LOWERCASE').is_a? Enum # =>> true
Vous pouvez créer des constantes dans votre Enum en définissant des variables de classe à l'intérieur de votre classe Enum. Vous pouvez définir une constante en assignant une valeur à une variable de classe statique, par exemple :
class Enum
UPPERCASE = 'uppercase'
end
Vous pouvez vérifier si une valeur est de type Enum en utilisant la méthode de type?. Cette méthode prend un objet et vérifie si il est de type Enum. Si c'est le cas, la méthode renvoie true, sinon elle renvoie false. Par exemple :
Enum.const_get('LOWERCASE').is_a? Enum # =>> true
Les Enums sont limités car ils ne peuvent contenir que des valeurs que vous définissez. Vous ne pouvez pas modifier ou ajouter des valeurs à un Enum une fois que vous l'avez défini. De plus, les Enums ne sont pas itérables, c'est-à-dire que vous ne pouvez pas itérer à travers les valeurs d'un Enum.
Vous pouvez ajouter des méthodes à votre Enum en définissant des méthodes à l'intérieur de votre classe Enum. Par exemple, vous pouvez créer une méthode qui renvoie la valeur d'une constante :
class Enum
def get_constant(constant_name)
Enum.const_get(constant_name)
end
end
Vous pouvez ajouter des méthodes de classe à votre Enum en définissant des méthodes statiques à l'intérieur de votre classe Enum. Par exemple, vous pouvez créer une méthode statique qui renvoie la liste des constantes d'un Enum :
class Enum
def self.get_constants
Enum.constants
end
end
Vérifier si un tableau contient un objet ruby-on-rails |
Valider une date dans rails ? ruby-on-rails |
Valider lors de la destruction dans rails ruby-on-rails |
Valider l'attribut uniquement s'il est présent (uniquement si l'utilisateur le remplit) ruby-on-rails |
Validation rails requise pour la numéricité même si la présence n'est pas réglée à vrai ruby-on-rails |
Validation des longueurs minimale et maximale d'une chaîne de caractères mais en autorisant le vide ruby-on-rails |
Validation de messages personnalisés pour rails 3 ruby-on-rails |