添加注册条件来设计

时间:2018-07-20 14:12:19

标签: ruby-on-rails devise

我的目标很简单。我只允许用户拥有唯一的密码才能注册。我想检查此代码是否有效(位于我的密码数据库中),然后在用户注册后将其删除。

我有一个带有以下代码的secret_code模型:

:secret_code column

我在注册表格中输入了密码

<%= f.input :secret_code, required: true, autofocus: true %>

我应该个性化class RegistrationsController < Devise::RegistrationsController吗?

如何?谢谢!

3 个答案:

答案 0 :(得分:2)

您可以通过重写registrationcontroller来做到这一点。取消注释这样的创建方法。

def create super end

并添加一个类似的过滤器:

before_action :check_secret_code, only: [:create]

,并且您必须修改路线以告知设计者使用控制器而不是默认控制器:

devise_for :users, controllers: { registrations: "users/registrations" }

您可以在该check_secret_code方法中指定所需内容,如果代码错误,则输入render 'new'。希望对您有所帮助。

答案 1 :(得分:0)

您可以使用简单的before filter来实现。这样,您就不必弄乱设计代码。

   class RegistrationsController < Devise::RegistrationsController
      before_filter :check_conditions, only: :create

      def create
        super
      end

      private
        def check_conditions
          #your conditions
        end
    end

答案 2 :(得分:0)

解决了!除了@Mehmet答案外,我还必须将message_list

application_helper.rb

然后将module ApplicationHelper def resource_name :user end def resource @user ||= User.new end def devise_mapping @devise_mapping ||= Devise.mappings[:user] end end 放入include ApplicationHelper after the class name