2011-03-19 32 views
8

我最近已將Devise身份驗證系統集成到一個rails測試應用程序中。測試應用程序只包含一個位於身份驗證背後的項目模型/控制器/視圖。設計一個測試版註冊與設計

我現在添加一個測試邀請系統,以便只有從其他用戶收到邀請的用戶才能加入該網站。我通過以下方式實施該系統:http://railscasts.com/episodes/124-beta-invitations

我遇到的一個問題是,測試邀請需要我添加一些邏輯到用戶控制器,這是你無法通過Devise完成的。我正在嘗試創建一個新的註冊控制器,使用Users :: RegistrationsController < Devise :: RegistrationsController,它基本上與Devise控制器相同,但允許我爲beta邀請系統添加一些額外的邏輯。

但是,我不能讓這個新的控制器工作(並且我也遇到了麻煩,至於我應該在這個新的控制器中包含什麼)。我已經添加了以下到我的路線文件:

資源:註冊

資源:邀請

資源:項目

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