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.