Настройка бета-регистрации с Devise - PullRequest
8 голосов
/ 19 марта 2011

Я недавно интегрировал систему аутентификации Devise в тестовое приложение rails.Тестовое приложение просто содержит модель проекта / контроллер / представление, которое находится за аутентификацией.

Я сейчас добавляю систему бета-приглашений, так что только пользователи, получившие приглашение от другого пользователя, могут присоединиться к сайту.Я внедрял эту систему с помощью следующего: http://railscasts.com/episodes/124-beta-invitations.

Одна проблема, с которой я столкнулся, заключается в том, что бета-приглашение требует от меня добавить некоторую логику в пользовательский контроллер, чего нельзя сделать с помощью Devise.Я пытаюсь создать новый контроллер регистрации с помощью Users :: RegistrationsController

Однако я не могу заставить этот новый контроллер работать (и у меня также возникают проблемы с тем, что я должен включить в этот новый контроллер).Я добавил следующее в мой файл маршрутов:

ресурсы: регистрации

ресурсы: приглашения

ресурсы: проекты

devise_for: пользователи

devise_scope: user do
get 'users / sign_up /: приглашение_token' => 'registrations # new'
end

Что я добавлю в этот новый контроллер регистрацииимитировать функциональность оригинального контроллера разработки / регистрации?

1 Ответ

10 голосов
/ 19 марта 2011

В вашей модели пользователя добавьте проверку, в которой вы проверяете, что электронная почта пользователя находится в списке приглашений для бета-тестирования.

Этот SO очень похож: Белый список с устройством ... Я добавил подобный код, он уместен здесь:

class User < ActiveRecord::Base
  devise :database_authenticatable, :registerable #etc

  before_validation :beta_invited?

  def beta_invited?
    unless BetaInvite.exists?(:email=>email)
      errors.add :email, "is not on our beta list"  
    end
  end 

end
...