Rails 3.1 Devise - Как я могу позволить пользователям создать учетную запись с помощью только электронной почты? - PullRequest
3 голосов
/ 19 июля 2011

Я использую Rails 3.1 и Devise для регистрации и хотел бы изменить механизм регистрации Devise таким образом, чтобы незарегистрированный пользователь мог зарегистрироваться только с помощью адреса электронной почты, без необходимости вводить имя пользователя ипароль, если она не хочет.Мне нужно следующее: а) если пароль не введен, я бы хотел, чтобы приложение автоматически отправляло его вместе с формой вместе с подтверждением пароля, и б) если имя пользователя не указано, приложение отправит предположение оимя пользователя на основе локальной части адреса электронной почты.Например, если вы зарегистрируетесь с адресом электронной почты, таким как «SarahSilverman@gmail.com», без имени пользователя или пароля, он отправит «SarahSilverman» в качестве имени пользователя по умолчанию, а также случайно сгенерированный пароль.Вот ссылка на код, который вытаскивает локальную часть и генерирует временный пароль:

app / helpers / application_helper.rb

А вот представление регистрации:

[app / views / devise / registrations / html.haml]) (https://github.com/fdschoeneman/skygodlin/blob/invitable-adding/app/views/devise/registrations/new.html.haml)

В настоящее время поля пароля заполняются в соответствии с назначением и отправляют пароль вместе с формой. Проблема в том, чточто код, который я имею, не добавляет имя к параметрам и отправляет их вместе с электронным письмом, когда пользователь нажимает на регистрацию. Вот суть соответствующего вывода из моих журналов:

log/development.log

Спасибо.

Ответы [ 2 ]

2 голосов
/ 19 июля 2011

Вам необходимо переопределить контроллер регистрации.

class RegistrationsController < Devise::RegistrationsController
  def new
    super
  end

  def create
    if params[:user] && !params[:user][:password]
        #params[:user][:password] = "Some password" 
        #should problem make this a random string but that's another question 
        super
    else
        super
    end
  end

  def update
    super
  end
end

Некоторым это нравится.Дайте мне знать, если есть ошибки.

1 голос
/ 19 июля 2011

Devise имеет различные модули, которые помогут вам оценить некоторые действия так, как вам нужно, вы можете найти их в верхней части вашей пользовательской модели

class Company < ActiveRecord::Base

  devise :database_authenticatable, :registerable,
         :recoverable, :rememberable, :trackable, :validatable

Модуль , проверяемый , отвечающий за модель проверки устройства, поэтому обязательно закомментируйте его, чтобы удалить параметры проверки устройства по умолчанию. После этого вы можете создать свою собственную логику проверки или переопределить контроллер регистрации так же, как Codeglot, упомянутый ранее

...