尽管允许,但我的控制器的参数中的密码被删除

Password being removed from parameters in my controller despite being allowed

在我的 KidsController 中我有

def kid_params
  params.require(:kid).permit(:firstname,
                              :lastname,
                              :gender,
                              :pseudo,
                              :birthdate,
                              :avatar,
                              :password,
                              :longitude,
                              :latitude,
                              :parent_id)
end

而kid的定义如下:

class Kid < ActiveRecord::Base
  has_secure_password
end

然而,当我尝试 POST 一个 json 创建一个新的 Kid 时,我得到一个 密码不能为空 错误。

日志显示:

Started POST "/kids" for 127.0.0.1 at 2015-05-12 14:28:34 +0900 Processing by KidsController#create as HTML Parameters: {"firstname"=>"testpaw", "lastname"=>"qwdqwd", "password"=>"[FILTERED]", "kid"=>{"firstname"=>"testpaw", "lastname"=>"qwdqwd"}}

但是一旦我进入实际的创建方法,我的参数就减少到 {"firstname":"testpaw","lastname":"qwdqwd"}

什么是从我的参数中过滤密码? 从 rails 控制台创建一个 Kid 工作正常...

在您当前的设置中,password 被过滤,因为它不是 kid 命名空间的一部分。如果它应该是 kid 命名空间的一部分,那么您需要在您的视图中更改它。