He visto documentos/sitios web que muestran que los validadores personalizados deben ir en un directorio /lib
o /lib/validators
de un proyecto. He encontrado (leyendo una respuesta a otra publicación) que solo parecen funcionar en config/initializers
. ¿Alguien sabe o tiene un puntero a la documentación oficial que muestra dónde deberían vivir los validadores personalizados?¿Dónde deben almacenarse los validadores personalizados de Rails 3?
Respuesta
Si coloca sus validadores personalizados en app/validators
se cargarán automáticamente sin necesidad de modificar su archivo config/application.rb
.
No sé si hay alguna gema/configuración que necesites agregar para esto, pero debajo de los rieles 3.2.8 esto no funciona. Específicamente, simplemente dejar caer su validador en la aplicación/validadores/???. Rb no funciona. – Doug
Doug trata de nombrar el archivo del validador de la misma manera que se nombra la clase del validador, pero se destaca: MyCoolValidator va a app/validators/my_cool_validator.rb – equivalent8
Esta debería ser la respuesta aceptada en mi opinión. – DavidJ
Aquí está el official docs sobre validaciones personalizadas. AFAIK es una buena práctica para mantenerlos en los modelos pertinentes.
A menos que sean aplicables a varios modelos, en cuyo caso debe guardarlos en otro lugar para mantenerse SECO. –
Que es lo que presumiblemente son porque de lo contrario no tiene sentido crear una clase separada para ellos. –
@Jakub Sí, existe: Principio de responsabilidad única – mattwynne
lib/validators
parece de lejos el más limpio. Sin embargo, es posible que deba cargarlos antes de sus modelos, por lo que probablemente provengan de un inicializador.
Si se agrega esto a su archivo /config/application.rb:
config.autoload_paths += %W["#{config.root}/lib/validators/"]
Entonces rieles se cargará automáticamente sus validadores en el arranque (al igual/config/inicializadores /), pero se mantiene la limpieza estructura de tener sus validadores en un lugar agradable y bien nombrado.
Buena idea, pero su código necesita cierta limpieza: 'config.autoload_paths + =% W (# {config.root}/lib/validators /)' – aNoble
- 1. ¿Dónde deberían almacenarse los archivos cargados en Rails 3.1?
- 2. raíles 3 validadores e i18n
- 3. ¿Cómo deben almacenarse los diccionarios python en pytables?
- 4. ¿Dónde se definen los eventos de JavaScript personalizados de Rails 3?
- 5. filtros personalizados/validadores de Zend Framework
- 6. ¿Dónde está asset_host Rails 3?
- 7. Dónde configurar Rails 3 cache_store?
- 8. ¿A dónde desapareció link_to_function en Rails 3?
- 9. Rails 3: ¿Formularios personalizados creados por el usuario?
- 10. Rails 3 responda a json, con atributos/métodos personalizados
- 11. ¿Deben los validadores en primavera acceder a la base de datos?
- 12. dónde poner reglas de formato de tiempo en Rails 3?
- 13. ¿Dónde puedo obtener la versión completa de los rieles 3?
- 14. ¿Qué deben saber los desarrolladores de Ruby and Rails?
- 15. ¿A dónde deberían ir las bibliotecas en Rails 3?
- 16. Dónde/cómo codificar Constantes en Rails 3 Aplicación
- 17. Complejidad algorítmica de los analizadores/validadores XML
- 18. Deshabilitar los validadores de ASP.NET con JavaScript
- 19. Rails 3 tipos de datos?
- 20. Dónde poner las variables globales en Rails 3
- 21. validadores duplicados
- 22. Rails 3 - entorno establecido
- 23. Traducir JSON en Rails 3
- 24. Dónde almacenar los datos de configuración (estructurados) en Rails
- 25. Rails 3: guides.rubyonrails.org en PDF?
- 26. Rails 3 valida la regla en función de la acción
- 27. Rails 3: HTTP_USER_AGENT
- 28. Rails 3: rollback for after_create
- 29. paginará Rails 3 por Página
- 30. Enviando boletines en Rails 3
¿Qué le parece [cambiar el indicador de respuesta aceptada] (http://stackoverflow.com/questions/5263239/where-should-rails-3-custom-validators-be-stored/6610270#comment16660135_6610270)? – JJD