Validating non ActiveRecord objects

I’ve seen a few semi-solutions to this issue but nothing recent and coherent.
What is the best way to use the AR validation system on non-AR objects?
Seems like this come up enough it should be a HowTo on the Rails site.

Thanks,

-Sam.