ruby-on-rails – 使用Devise设置beta注册

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

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

我遇到的一个问题是,beta邀请函要求我向用户控制器添加一些逻辑,而这是通过Devise无法完成的.我正在尝试使用Users :: RegistrationsController<创建一个新的注册控制器. Devise :: RegistrationsController基本上与Devise控制器相同,但允许我为beta邀请系统添加一些额外的逻辑. 但是,我不能让这个新的控制器工作(我也在这个新控制器中应该包含的内容方面遇到麻烦).我在路线文件中添加了以下内容:

resources :registrations

resources :invitations

resources :projects

devise_for :users

devise_scope :user do
get ‘users/sign_up/:invitation_token’ =>
‘registrations#new’
end

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

解决方法

在您的用户模型中,添加验证,检查用户的电子邮件是否位于测试版邀请列表中.

这个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

相关文章

validates:conclusion,:presence=>true,:inclusion=>{...
一、redis集群搭建redis3.0以前,提供了Sentinel工具来监控各...
分享一下我老师大神的人工智能教程。零基础!通俗易懂!风趣...
上一篇博文 ruby传参之引用类型 里边定义了一个方法名 mo...
一编程与编程语言 什么是编程语言? 能够被计算机所识别的表...
Ruby类和对象Ruby是一种完美的面向对象编程语言。面向对象编...