【发布时间】:2014-01-17 16:18:57
【问题描述】:
我目前正在执行以下操作:
Rails 4.0.2
设计 3.2.2
在设计文档中,它指出强参数将默认阻止除以下属性之外的所有属性 - 电子邮件、密码、密码确认、当前密码。
我在我的注册设计视图中编辑了 new.html.erb 以包含三个附加属性 - first_name、last_name、profile_name,如下所示。
<h2>Sign up</h2>
<%= form_for(resource, :as => resource_name, :url => registration_path(resource_name)) do |f| %>
<%= devise_error_messages! %>
<div><%= f.label :first_name %><br />
<%= f.text_field :first_name %></div>
<div><%= f.label :last_name %><br />
<%= f.text_field :last_name %></div>
<div><%= f.label :profile_name %><br />
<%= f.text_field :profile_name %></div>
<div><%= f.label :email %><br />
<%= f.email_field :email, :autofocus => true %></div>
<div><%= f.label :password %><br />
<%= f.password_field :password %></div>
<div><%= f.label :password_confirmation %><br />
<%= f.password_field :password_confirmation %></div>
<div><%= f.submit "Sign up" %></div>
<% end %>
<%= render "devise/shared/links" %>
由于某种原因,用户仍然可以通过在所有字段中输入信息来注册,甚至是我添加的新字段。默认情况下我的所有属性都被允许是有原因的吗?
我是编程新手,我正在学习我的第一个 Rails 教程,所以我确定我犯了一个完全明显的错误,但我无法弄清楚并且无法找到相同的问题通过在线搜索。
谢谢
【问题讨论】:
-
检查记录是否包含您添加的列的值。我认为它们将具有 nil 值,因为它们无法绕过强参数
-
是的,它的值是 'nil' 并且没有被添加到数据库中。谢谢!
标签: ruby-on-rails devise ruby-on-rails-4 strong-parameters