I don't think I understand the logic behind this original method. Why is password considered optional if `encrypted_password` is set, but the virtual attribute `password` is blank?