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