Subvalid
Subjective validation for plain old ruby objects
Subvalid decouples your validation logic from your object structure. With Subvalid you can define different validation rules for different contexts. So rather than defining validation on the object, and having it be 'objective', you can define it in a separate class - so it's 'subjective'. (as in Subjective validation).