J'ai certaines données que je veux stocker quelque part dans mon application Rails parce que je l'utilise pour générer des champs de formulaire, vérifier un formulaire soumis pour s'assurer que ses valeurs sont valides, etc. Fondamentalement, je veux les données un endroit parce que je m'en sers à plusieurs endroits.valeurs constantes dans Rails
Auparavant, je définissais une méthode initialize
dans mon contrôleur et initialisais les variables d'instance dans cette méthode, par ex. @graph_types = ['bar', 'line']
. Cela semblait une mauvaise idée parce que c'est vraiment initialize
qui était utilisé pour (initialiser ces valeurs) et les variables d'instance pourraient être changées plus tard, ce que je ne veux pas. Maintenant, je définis des constantes en dehors de n'importe quelle méthode dans mon contrôleur, juste en haut après mes filtres, et je les gèle, par exemple. GraphTypes = ['bar', 'line'].freeze
. Je ne voulais pas stocker de telles données dans un fichier de configuration parce que je devais alors garder la trace d'un fichier supplémentaire, lire le fichier et l'analyser, etc. Je ne voulais pas stocker ces données dans la base de données parce que cela semble être trop lourd; Je n'ai pas besoin de faire des requêtes folles LEFT OUTER JOIN-type combinant les types de graphiques disponibles avec une autre de mes constantes, disons Themes = ['Keynote', 'Odeo', '37 Signals', 'Rails Keynote'].freeze
. Je ne voulais pas stocker les données dans environment.rb car ces données ne concernent qu'un contrôleur particulier. Compte tenu de tout cela, est-ce que je vais à propos de cette «façon Ruby»?
Où placez-vous la classe? Le situez-vous avec vos modèles? – ahsteele
Eh bien, je le mets dans le répertoire models, mais il vaudrait probablement mieux le mettre en lib. – user37011