If a Hero makes a Speed/Sanity/other non-Might attack, when does the Traitor reveal that the target lacks that trait and can't be attacked that way?
As the ring only allows you to attack a monster that has a sanity trait in the first place, he shouldn't have ever been allowed to attempt the attack. So if by "attacked" you mean "rolled the dice for the attack", then he should have already been corrected sooner. If by "attacked" you mean "declared that he was using the ring to attack", then I believe you did the right thing.

I don't think there's a specific thing that addresses this in the rulebook, but if the legality of an action (such as using the ring to attack) depends on certain factors (such as whether the monster has sanity or not), then the heroes should be allowed to ask if the monster has a sanity trait, and the traitor should answer. (NOT what the sanity value is, just whether or not it exists). This is the only way that the heroes can make a legal decision.