Why the behavior changed here?

Maybe you didn't understand it in a right way:

When I say ` it { should_not accept_values_for(:gender, "INVALID", "MALE" }` I expect both values to be not valid for gender not just one of them.  
This is intended behavior and we should not change it.