# \[ANN\] Validation Reflection plugin

**URL:** <https://www.ruby-forum.com/t/ann-validation-reflection-plugin/100449>\
**Category:** Rails\
**Created:** [July 28, 2006, 11:20pm UTC](https://www.ruby-forum.com/t/ann-validation-reflection-plugin/100449 "2006-07-28T23:20:56Z")\
**Posts on this page:** 5\
**Page:** 1

<div class="post-metadata">

**Author:** ![wickie](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/w/ba9def/32.png) [@wickie](https://www.ruby-forum.com/u/wickie)\
**Post date:** [July 28, 2006, 11:20pm UTC](https://www.ruby-forum.com/t/ann-validation-reflection-plugin/100449/1 "2006-07-28T23:20:56Z")

</div>

The validation reflection plugin adds three things

(1) Reflective access to validations  
- ModelClass.reflect\_on\_all\_validations  
- ModelClass.reflect\_on\_validations\_for(:property)

(2) It provides “declarative” methods for defining  
validations based on database metadata  
- validates\_presence\_of\_mandatory\_content\_columns  
- validates\_lengths\_of\_string\_attributes  
- validates\_all\_associated

(3) It reflects validation information into the class attributes of  
of HTML elements generated from rhtml templates.  
See test/instance\_tag\_validations\_test.rb for what this looks like.  
Yes, for validates\_format\_of it gets nasty.

Installation:

$ script/plugin install   
[http://www.schuerig.de/michael/rails/validation\_reflection](http://www.schuerig.de/michael/rails/validation_reflection)

Michael

–  
Michael S.  
[mailto:removed\_email\_address@domain.invalid](mailto:removed_email_address@domain.invalid)  
[http://www.schuerig.de/michael/](http://www.schuerig.de/michael/)

---

<div class="post-metadata">

**Author:** ![wickie](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/w/ba9def/32.png) [@wickie](https://www.ruby-forum.com/u/wickie)\
**Post date:** [July 29, 2006, 9:06am UTC](https://www.ruby-forum.com/t/ann-validation-reflection-plugin/100449/2 "2006-07-29T09:06:06Z")

</div>

> $ script/plugin install   
> [http://www.schuerig.de/michael/rails/validation\_reflection](http://www.schuerig.de/michael/rails/validation_reflection)

Great work Micheal.

Cheers  
Nic

---

<div class="post-metadata">

**Author:** ![wickie](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/w/ba9def/32.png) [@wickie](https://www.ruby-forum.com/u/wickie)\
**Post date:** [July 30, 2006, 1:25am UTC](https://www.ruby-forum.com/t/ann-validation-reflection-plugin/100449/3 "2006-07-30T01:25:00Z")

</div>

On Saturday 29 July 2006 09:06, Dr Nic wrote:

> > $ script/plugin install   
> > [http://www.schuerig.de/michael/rails/validation\_reflection](http://www.schuerig.de/michael/rails/validation_reflection)
> 
> Great work Micheal.

Thanks. I had the functionality lying around for more than a year as  
part of my BoilerPlate project. But as that project is all but dead, I  
intend to release some of its reusable functionality in the form of  
plugins.

Michael

–  
Michael S.  
[mailto:removed\_email\_address@domain.invalid](mailto:removed_email_address@domain.invalid)  
[http://www.schuerig.de/michael/](http://www.schuerig.de/michael/)

---

<div class="post-metadata">

**Author:** ![wickie](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/w/ba9def/32.png) [@wickie](https://www.ruby-forum.com/u/wickie)\
**Post date:** [July 30, 2006, 7:11pm UTC](https://www.ruby-forum.com/t/ann-validation-reflection-plugin/100449/4 "2006-07-30T19:11:13Z")

</div>

Nice one. Just what I need.

---

<div class="post-metadata">

**Author:** ![wickie](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/w/ba9def/32.png) [@wickie](https://www.ruby-forum.com/u/wickie)\
**Post date:** [July 31, 2006, 7:17pm UTC](https://www.ruby-forum.com/t/ann-validation-reflection-plugin/100449/5 "2006-07-31T19:17:27Z")

</div>

On Sunday 30 July 2006 13:12, Dan W. wrote:

> Nice one. Just what I need.

If you want to use this for client-side validation, have a look at my  
almost purely declarative validator at

[http://www.schuerig.de/michael/javascript/](http://www.schuerig.de/michael/javascript/)

It is, unfortunately, based on an earlier version of Prototype and my  
own support code probably clashes with current the Prototype lib. I  
intend to rectify this some time and bundle the stuff in a plugin.  
Alas, I don’t have the time right now to do it right.

Michael

–  
Michael S.  
[mailto:removed\_email\_address@domain.invalid](mailto:removed_email_address@domain.invalid)  
[http://www.schuerig.de/michael/](http://www.schuerig.de/michael/)
