Ruby on rails 4 仅允许特定电子邮件在Rails应用程序中注册(设计)

Ruby on rails 4 仅允许特定电子邮件在Rails应用程序中注册(设计),ruby-on-rails-4,devise,Ruby On Rails 4,Devise,我正在使用Desive对Rails应用程序中的用户进行身份验证和注册。但是,我只希望有特定结尾的电子邮件的用户能够注册并访问它(比如@xyz.com)。我需要做些什么来反映这一点?如果您想在注册后限制用户访问,请使用before\u过滤器: before_filter :verify_email private def verify_email (redirect_to(root_path) unless current_user.email.include?('@xyz.com') e

我正在使用Desive对Rails应用程序中的用户进行身份验证和注册。但是,我只希望有特定结尾的电子邮件的用户能够注册并访问它(比如@xyz.com)。我需要做些什么来反映这一点?

如果您想在注册后限制用户访问,请使用before\u过滤器:

before_filter :verify_email

private

def verify_email
  (redirect_to(root_path) unless current_user.email.include?('@xyz.com')
end

编辑:如果你想限制注册,你可以做一个表单验证来检查电子邮件是否符合你的模式。designe提供了一种验证电子邮件地址的方法。 请参阅文档:


我应该将其添加到哪里?添加到要限制访问的控制器中。如果它是应用程序范围的,那么application_controller.rb这看起来不起作用。如果电子邮件没有这样的结尾,我甚至不希望用户能够首先注册。@如果是这样,请在模型中为电子邮件添加验证。类似于
验证:电子邮件,格式:{with://\b[A-Z0-9.\u%A-z\-]+@xyz\.com\z/,消息:“必须是一个xyz.com帐户”}
您是说您有一组固定的域,您允许使用电子邮件吗?或者你是说你只希望被邀请的用户被允许?对于后者,创建一个“邀请”表并只允许已被邀请注册的电子邮件是很容易的。对于后者,可以使用正则表达式。无论哪种方式,您都可能会覆盖Desive controller注册方法。有关覆盖,请参阅。仅允许特定域名在Rails应用程序中注册(Desive gem)