To ensure that a value is correct my validator needs to retrieve values from the database to compare against a state string that is being saved. Sometimes the data being put in might not be wrong but just has a bit of extra data in it that can be filtered out. I'd like to put all of that logic into a proper validator but then the validator needs to be able to change the value of the data it is validating. If I have the validator leave it alone then the model events end up doing twice the work for that operation.

Should I leave more complex logic like this out of a simple Validator class and instead put it in the validation event where any ordering issues can be observed?