[英]Devise, blank password_confirmation
需要进行ajax侧面注册。 创建的RegistrationsController:
class RegistrationsController < Devise::RegistrationsController
def create
if request.xhr?
build_resource(sign_up_params)
if resource.save
...
end
else
super
end
end
end
注意,如果我没有在XHR中传递该字段,或者该字段为空,并且Angular在执行$ http.post之前未收集它,则该模型不会验证密码的确认
在Angular中$scope.reg = {'password_confirmation': ''}
了一段时间,对初始$scope.reg = {'password_confirmation': ''}
进行了硬编码,但想知道如何以正常方式解决此问题?
正确设置Devise后,不太可能无法验证模型的密码确认。 如果注册实际上创建了一个新用户,您将确定是否不会运行验证。 如果未创建新用户,则验证可以正常进行。
问题似乎在于您的create
动作。 看来您的if resource.save
没有else
块,这是当resource.save
由于验证错误而失败时所调用的。 您的create
动作应类似于:
def create
# seems unnecessary to check if request is xhr
build_resource(sign_up_params)
if resource.save
render json: resource
else
render :json => { :errors => @model.errors.full_messages }, :status => 422
end
end
然后,只需在Angular中包含通过通知用户来处理错误的代码即可。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.