Devise skip_confirmation! fails to avoid to send the confirmation instructions
If you're updating a user record, make sure to use skip_reconfirmation!
(mind the re)
You need to skip confirmation before you create the User objects and its persisted to the database. So the user creation part of your method would look like
user = User.new(:username => data.name, :email => data.email, :password => Devise.friendly_token[0,20]) user.skip_confirmation! user.save