J'ai vu des docs/sites Web montrer que les validateurs personnalisés devraient aller dans un répertoire /lib
ou /lib/validators
d'un projet. J'ai trouvé (en lisant une réponse à un autre post) qu'ils semblent seulement fonctionner en config/initializers
. Est-ce que quelqu'un sait, ou a un pointeur vers la documentation officielle qui montre où les validateurs personnalisés devraient vivre?Où stocker les validateurs Rails 3 personnalisés?
Répondre
Si vous placez vos validateurs personnalisés dans app/validators
ils seront automatiquement chargés sans avoir besoin de modifier votre fichier config/application.rb
.
Je ne sais pas s'il y a une gem/config que vous devez ajouter pour cela, mais sous les rails 3.2.8 ça ne marche pas. Plus précisément, le simple fait de laisser tomber votre validateur dans app/validators/???. Rb ne fonctionne pas. – Doug
Doug essaie de nommer le fichier du validateur de la même façon que la classe du validateur est nommé mais souligné: MyCoolValidator va à app/validators/my_cool_validator.rb – equivalent8
Cela devrait être la réponse acceptée à mon avis. – DavidJ
Voici les official docs concernant les validations personnalisées. AFAIK est une bonne pratique pour les garder dans les modèles pertinents.
Sauf si elles sont applicables à plusieurs modèles, auquel cas vous devriez les garder ailleurs pour rester au sec. –
Ce qui est probablement ce qu'ils sont parce que sinon, il est inutile de créer une classe distincte pour eux. –
@Jakub Oui il y a: Principe de responsabilité unique – mattwynne
lib/validators
semble de loin le plus propre. Cependant, vous devrez peut-être les charger avant vos modèles, donc probablement à partir d'un initialiseur.
Si vous ajoutez ceci à votre fichier /config/application.rb:
config.autoload_paths += %W["#{config.root}/lib/validators/"]
Ensuite Rails chargera automatiquement validateurs au démarrage (tout comme/config/initializers /), mais vous gardez le nettoyage structure d'avoir vos validateurs dans un endroit agréable et bien nommé.
Bonne idée mais votre code a besoin d'un peu de nettoyage: 'config.autoload_paths + =% W (# {config.root}/lib/validators /)' – aNoble
- 1. rails 3 validateurs & i18n
- 2. Zend Framework - Où placer nos validateurs personnalisés?
- 3. validateurs message dans 3 rails
- 4. Rails 3: Où stocker les méthodes partagées pour les modèles?
- 5. Où stocker les fichiers de configuration personnalisés
- 6. Où stocker des objets personnalisés?
- 7. Rails - où stocker les collections
- 8. validateurs personnalisés dynamiquement
- 9. sur les rails personnalisés 3 modèle d'échafaudage
- 10. Rails 3 personnalisés FormBuilder Paramètres
- 11. Où dois-je stocker les journaux php personnalisés?
- 12. Rails 3 où requête
- 13. Rails 3: Utilisateur Formulaires personnalisés créés?
- 14. Comment remplacer «où» dans les rails 3
- 15. validateurs discrets de date personnalisés pour les dates
- 16. Filtres personnalisés/validateurs dans Zend Framework
- 17. Rails - Construction d'un assistant. Par où commencer, où stocker
- 18. nhibernate.validator & x.Val & jQuery avec des validateurs personnalisés
- 19. Rails 3: où question numéro
- 20. Où stocker les données de configuration (structurées) dans Rails
- 21. où placer des validateurs étendus dans rails3
- 22. Les validateurs personnalisés ASP.NET - Page.Validate ("groupName") ne se déclenchent pas?
- 23. Comment définir des messages personnalisés pour les validateurs Zend_File_Transfer_Adapter_Http
- 24. Pour définir des validateurs symfony pour les éléments HTML personnalisés
- 25. Obtention de validateurs personnalisés pour utiliser le gem client_side_validations
- 26. Rails - Comment empêcher les validateurs personnalisés de s'exécuter sur des champs optionnels?
- 27. Où stocker des fichiers DLL personnalisés sous Windows?
- 28. Désactiver les validateurs Eclipse
- 29. Où stocker les sites Rails sur un serveur Apache?
- 30. Où stocker la classe dans ruby sur les rails
Que diriez-vous de [changer l'indicateur de réponse accepté] (http://stackoverflow.com/questions/5263239/where-should-rails-3-custom-validators-be-stored/6610270#comment16660135_6610270)? – JJD