如何在Rails 4中使用params.require

4

我有一个私有方法,用于注册表格,包含四个字段:firstnameemailpasswordconfirm password。但我不确定如何检查password confirmation

def user_params
    params.require(:user).permit(:name, :email, :password, 
               :password_confirmation)
end

以前,我使用以下代码。如何将下面的代码转换为使用params.require?
User.new(name: params[:name], email: params[:email], 
     password: params[:password], confirmpassword: params[:password])

你的字段名是 confirmpassword 吗?如果你想将其列入白名单中,你需要这样做:params.require(:user).permit(:name, :email, :password, :confirmpassword) - Pavan
1个回答

7

看你的代码

User.new(name: params[:name], email: params[:email], 
     password: params[:password], confirmpassword: params[:password])

我猜测你没有使用password_confirmation字段。在这种情况下,你需要这样使用 params.require

def user_params
    params.require(:name)
    params.require(:email)
    params.require(:password)
    params.permit(:name,:email,:password)
end

更新:根据评论修改

如果你正在使用password_confirmation字段,那么它应该像在RAILS 3.x.x中一样。

User.new(name: params[:name], email: params[:email], 
     password: params[:password], confirmpassword: params[:password_confirmation])

而这就是使用 strong_parameters(通常与 rails 4.x.x 一起使用)的方式。

User.new(user_params)

def user_params
    params.require(:name)
    params.require(:email)
    params.require(:password)
    params.require(:confirm_password)
    params.permit(:name,:email,:password,:confirm_password)
end

我有一个密码确认字段? - theJava
在这种情况下,您可以像“密码”一样将“password_confirmation”字段加入白名单。 - Paritosh Piplewar
完美的,<%= password_field_tag :confirm_password, nil, class: "form-control", placeholder: "确认密码" %> 所以在我的情况下应该是 :confirm_password 对吧?因为我的名字字段是 confirm_password。 - theJava
@theJava 你应该明确指出你的字段名是 confirm_password。目前你说的是 confirm password - Pavan

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接