My User (Devise) model also has name, city, nation, phone members.
In the create registration page - I validates_presence_of city, nation, phone, name, email,
I had a similar problem because when my User is created not all its fields are required. The other fields' presence is checked on: :update
using a validation.
So this is how I solved:
validates :birthdate, presence: true, on: :update, unless: Proc.new{|u| u.encrypted_password_changed? }
The method encrypted_password_changed?
is the one used in the Devise Recoverable.