> Why can we remove the lower? 

That means that we store the email in the database as it is provided by the user and do not force it to be lowercase, as (as described in the commit message) according to RFC 5321, the local part (before the *@*) might be case sensitive.

Still the uniqueness constraint is case insensitive, in order to avoid multiple users with email addresses which only differ in case.

>  Doesn't that mean that the user cannot allow with foo@uni-duesseldorf.de and foo@Uni-Duesseldorf.de anymore?

You mean *login*? I would always compare email addresses in a case insensitive way (do *lower* on both sides). Did that now in `User.find_by_email`.