How do you use Observers?

I'm relatively new to rail, and have only done minimal work with
observers, but I've seen them used for caching purposes. To remove
cached versions of pages after a model has been updated/saved, and
things of that nature. I've never considered using them for model
validation, as you point out that work belongs in the validation area
of the model, not in an observer.