My suggestion is to add the last_modification_by field to the model. In your supervisor, you could use this to find out who made the changes and who gets notified.
Then, so that your view / controller code puts the current user in this field.
It seems to me that this is the safest approach. I will worry about the observer with the help of the current user - it seems to me that the current user should be separated from the quasi-background processing that the observer does. (This is why deterring the current user in Thread - which I have used with great success in the past - is also not the case here).
This approach (having last_modified_by also allows you to make changes to records in batch mode - perhaps by sending an email to the owner of the record, which: "The system updated your record because (there was some daily processing procedure). last_modified_by some was created by the user who represents the system (or admin user).
source share