使用Devise设置beta注册

时间:2011-03-19 00:17:37

标签: ruby-on-rails devise ruby-on-rails-plugins

我最近将Devise身份验证系统集成到rails测试应用程序中。测试应用程序只包含一个位于身份验证后面的项目模型/控制器/视图。

我现在正在添加测试版邀请系统,以便只有收到其他用户邀请的用户才能加入该网站。我通过以下方式实现了这个系统:http://railscasts.com/episodes/124-beta-invitations

我遇到的一个问题是,beta邀请函要求我向用户控制器添加一些逻辑,而这是通过Devise无法完成的。我正在尝试使用Users :: RegistrationsController<创建一个新的注册控制器。 Devise :: RegistrationsController基本上与Devise控制器相同,但允许我为beta邀请系统添加一些额外的逻辑。

但是,我无法让这个新的控制器工作(我也在这个新控制器中应该包含的内容方面遇到麻烦)。我在路线文件中添加了以下内容:

  

资源:注册

     

资源:邀请

     

资源:项目

     

devise_for:users

     

devise_scope:用户执行       获取'users / sign_up /:invitation_token'=>   “注册#新”
  端

我在这个新的注册控制器中添加了什么来模仿原始设计/注册控制器的功能?

1 个答案:

答案 0 :(得分: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