У меня есть приложение, которое делает нечто подобное - мы используем Open ID и OAuth исключительно для входа в систему, и хотя мы сохраняем адрес электронной почты пользователя (учетная запись Google или Facebook отправляет его обратно во время аутентификации), они никогда не входят в систему, используя его, и поэтому не не иметь / нужен пароль.
Это обратный вызов для того, что происходит, когда пользователь регистрируется через Facebook:
User.create!( :facebook_id => access_token['uid'],
:email => data["email"],
:name => data["name"],
:password => Devise.friendly_token[0,20])
Devise.friendly_token[...]
просто генерирует случайный 20-значный пароль для пользователя, и мы используем нашу пользовательскую модель по умолчанию с devise просто отлично. Моим подходом будет установка пароля аналогичным образом для ваших пользователей, поскольку вы никогда не будете использовать их пароль. Кроме того, если вы когда-нибудь передумаете и захотите, чтобы они могли войти в систему, вы можете просто изменить пароль пользователя в базе данных и создать форму входа в систему, а devise позаботится обо всем остальном.