Исходный код показывает другой маршрут: вы можете переопределить некоторые методы, чтобы определить, нужны ли они:
def password_required?
!persisted? || !password.nil? || !password_confirmation.nil?
end
def email_required?
true
end
Поместите эти функции в свою модель пользователя и при необходимости измените их.