User model with validation, delegates, and carrierwave upload mounter
A partial (an really short) answer:

for User.active method you have the following:

system = 0 or system is null

I think you should change the condition order to

system is null or system = 0

This because when (and depending of dbms) the database compare null with a value (system = 0 could be null = 0) it can invalidate the condition.