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

时间:2015-05-12 05:36:48

标签: ruby-on-rails ruby-on-rails-4 bcrypt

在我的KidsController中,我有

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

虽然小孩的定义如下:

class Kid < ActiveRecord::Base
  has_secure_password
end

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

日志显示:

  

开始发布&#34; / kids&#34;对于2015.05-05 14:28:34 +0900的127.0.0.1   由KidsController处理#create as HTML参数:   {&#34;名字&#34; =&gt;&#34; testpaw&#34;,&#34;姓氏&#34; =&gt;&#34; qwdqwd&#34;,   &#34;密码&#34; =&gt;&#34; [过滤]&#34;,&#34;孩子&#34; =&gt; {&#34;名字&#34; =&gt;&#34; testpaw&#34 ;,   &#34;姓&#34; = GT;&#34; qwdqwd&#34;}}

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

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

1 个答案:

答案 0 :(得分:1)

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