为用户模型设计…额外的列,这些列无法验证

问题描述

| 我在Rails 3应用程序中使用Devise进行身份验证。我通过db:migrate将first_name和last_name列添加数据库中。注册修改如下:
<%= form_for(resource,:as => resource_name,:url => registration_path(resource_name)) do |f| %>
  <%= devise_error_messages! %>

  <p><%= f.label :first_name %><br />
  <%= f.text_field :first_name %></p>

  <p><%= f.label :last_name %><br />
  <%= f.text_field :last_name %></p>

  <p><%= f.label :email %><br />
  <%= f.text_field :email %></p>

  <p><%= f.label :password %><br />
  <%= f.password_field :password %></p>

  <p><%= f.label :password_confirmation %><br />
  <%= f.password_field :password_confirmation %></p>

  <p><%= f.submit \"Sign up\" %></p>
<% end %>
用户模型中的验证:
  validates :first_name,:last_name,:email,:password,:password_confirmation,:presence => true
出于某种原因,我收到\“名字不能为空\”和\“姓氏不能为空\”验证错误。有趣的是,这是除了“股票设计”字段之外添加的两个字段。 Devise是否阻止将其他字段添加用户模型?还有什么其他原因? 谢谢。     

解决方法

您的用户模型可能已定义了attr_accessible。如果是这样,则必须在列表中添加:first_name和:last_name。