2011-03-19 4 views
8

최근에 Devise 인증 시스템을 레일 테스트 앱에 통합했습니다. 테스트 애플 리케이션은 단순히 인증 뒤에 앉아있는 프로젝트 모델/컨트롤러/뷰를 포함합니다.Devits로 베타 가입 설정

다른 초대장을받은 사용자 만 사이트에 가입 할 수 있도록 베타 초대 시스템을 추가 중입니다. 나는이 시스템을 다음을 통해 구현했다 : http://railscasts.com/episodes/124-beta-invitations.

내가 겪고있는 한 가지 문제는 베타 초대를 통해 사용자 컨트롤러에 일부 논리를 추가해야한다는 것입니다. 사용자 컨트롤러에는이를 수행 할 수 없습니다. Users : RegistrationsController < Devise :: RegistrationsController를 사용하여 새 등록 컨트롤러를 만들려고합니다. 기본적으로 Devise 컨트롤러와 같지만 베타 초대 시스템에 대한 몇 가지 추가 로직을 추가 할 수 있습니다.

하지만이 새로운 컨트롤러를 작동시키지 못했습니다.이 새로운 컨트롤러에 무엇을 포함시켜야 할지도 모릅니다.

자원 : 나는 내 경로 파일에 다음을 추가 한 등록

자원 : 초대

자원 : 프로젝트

devise_for : 사용자

devise_scope

: 사용자가 할
'users/sign_up/: invitation_token'=> '등록 번호 # 신규'

내가 원래 유증/등록 컨트롤러의 기능을 모방하기 위해이 새로운 등록 컨트롤러에 넣어 무엇을

?

답변

10

사용자 모델에서 사용자의 전자 메일이 베타 초대 목록에 있는지 확인하는 유효성 검사를 추가하십시오.

이 SO 매우 유사합니다 Whitelisting with devise이 ... 내가 거기에 유사한 코드를 추가, 그것은 관련 여기 :

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