Ruby on rails 增加注册条件设计

Ruby on rails 增加注册条件设计,ruby-on-rails,devise,Ruby On Rails,Devise,我的目标很简单。我想只允许用户在拥有唯一密码的情况下注册。我想检查此代码是否有效(在我的密码数据库中),然后在用户注册后将其删除 我有一个密码型号: :secret_code column 我在注册表中输入了密码 <%= f.input :secret_code, required: true, autofocus: true %> 我是否应该个性化类注册控制器

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

我有一个密码型号:

:secret_code column
我在注册表中输入了密码

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

我是否应该个性化
类注册控制器


怎么样?谢谢

您可以通过覆盖registrationcontroller来实现这一点。像这样取消注释create方法

def创建
超级的
结束

并添加一个过滤器,如:

在\u操作之前:仅检查\u密码:[:创建]

您必须修改您的路由,以告知Desive使用您的控制器,而不是默认控制器:

design_用于:用户、控制器:{注册:“用户/注册”}


您可以在
check\u secret\u code
方法中指定所需内容,如果代码错误,则使
呈现“new”
。希望有帮助。

您可以在筛选之前通过一个简单的
实现这一点。这样你就不必去设计代码了

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

      def create
        super
      end

      private
        def check_conditions
          #your conditions
        end
    end
类注册控制器
已解决!除了@Mehmet答案外,我还必须简化
application\u 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

并将
registrations\u controller.rb中的类名
后加入ApplicationHelper,谢谢@Mehmet!它几乎在工作。唯一的问题是,
呈现“new”
在my html.erb表单上给出了一个参数错误:表单中的第一个参数不能包含nil或在
上为空。你知道原因是什么吗?也许你可以通过取消新动作的注释来解决这个问题。但我不确定
module ApplicationHelper
 def resource_name
   :user
 end

 def resource
   @user ||= User.new
 end
 def devise_mapping
   @devise_mapping ||= Devise.mappings[:user]
 end
end