Validació de dates en Rails 3
Des de que han començat a sortir les primeres versions de Rails 3 hem estat jugant i provant-lo per a nous projectes. Amb un dels projectes necessitavem validar que unes dates fossin abans o després d'altres, així que seguint les guies de rails i algun post vam fer el nostre primer validator per Rails 3.
Us presentem date_validator
Tal i com diu la descripció al repositori de Github, es tracta d'un validador de dates molt simple. Per a instal·lar la gema només cal:
gem sources -a http://gemcutter.org # Si no ho heu fet abans
gem install date_validator
La única dependència que té és ActiveModel, o sigui que tan ho podeu fer servir en models de Rails 3 com en qualsevol classe (incloent-hi ActiveModel, és clar), i tot d'una manera molt senzilla:
validates :expiration_date, :date => { :after => Time.now, :before => Time.now + 1.year }
Les opcions que hi ha disponible per ara són:
:after
:before
:after_or_equal_to
:before_or_equal_to
No cal explicar per a què serveix cada opció, no?
No oblidem els tests: remarkable_date_validator
I per últim, però no per això menys important, si feu servir Remarkable (concretament el fork per Rails 3) instal·leu també la gema amb els matchers pel remarkable:
gem install remarkable_date_validator
I al specs dels vostres models:
should_validate_date_of :expiration_date, :date => {:after => Time.now, :before => Time.now + 1.year}
Algú s'anima a fer un fork amb matchers per shoulda?