首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >定制Devise gem (Rails)

定制Devise gem (Rails)
EN

Stack Overflow用户
提问于 2012-05-31 20:45:22
回答 2查看 247关注 0票数 0

我正在尝试添加一个新的字段“注册码”以及注册表单中的电子邮件/密码。(我在一个单独的数据库中有注册码字段,只有有效的注册码/电子邮件对才能进行注册)

我找不到devise gem所做的动作的任何控制器。

我如何定制devise来实现这一点?

提前谢谢。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2012-05-31 20:57:03

看起来你的问题基本上与设计本身无关(除了观点)。要验证您的注册码/电子邮件对,您肯定需要添加此验证。

验证注册码的简单方法可能是:

代码语言:javascript
复制
class User
  validate :validate_registration_code

  private
  def validate_registration_code
    reg_code =  RegistrationCode.find_by_code(registration_code)
    unless reg_code.email == record.email
      errors.add(:registration_code, "Invalid registration code for #{record.email}")
    end
  end
end

您可能还想编写简单的自定义验证器:

代码语言:javascript
复制
class RegistrationCodeValidator < ActiveModel::Validator
  def validate(record)
    # actual reg code validation
    # might look like:
    reg_code =  RegistrationCode.find_by_code(record.registration_code)
    unless reg_code.email == record.email
      record.errors[:registration_code] << "Invalid registration code for #{record.email}"
    end
  end
end

# in your User model
class User
  # include registration code validator
  include RegistrationCodeValidator
  validates_with MyValidator
end
票数 1
EN

Stack Overflow用户

发布于 2012-05-31 21:31:42

Devise将其控制器放在gem内部的幕后。如果您想要添加或修改一个操作,您必须将其子类化,并在路由中做一些工作,以便将操作传递给控制器。

但是,添加字段时不需要这样做。见goshakkk的答案

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/10833902

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档