【发布时间】:2014-05-04 18:01:41
【问题描述】:
我在我的 Rails 4 应用程序中使用 Devise 进行用户身份验证。最近我在 User 模型中添加了两个新列。它们是first_name 和last_name. 然后我用这两个属性的字段更新了登录表单。但是,当我测试创建新用户时,两者都没有保存到数据库中。我认为这可能是一个批量分配问题,但我没有收到任何类型的数据库错误。用户已成功创建,但仅存储原始属性(电子邮件、密码和密码确认)。任何人都可以帮忙吗?
这是我的表单的代码:
<div class="row">
<%= form_for(resource, :as => resource_name, :url => registration_path(resource_name)) do |f| %>
<%= devise_error_messages! %>
<div class="small-10 small-offset-0 columns">
<div class="row">
<div class="small-2 columns">
<%= f.label :first_name, class: 'right inline' %>
</div>
<div class="small-4 columns">
<%= f.text_field :first_name, id: 'right-label' %>
</div>
<div class="small-6 columns">
<!-- empty space -->
</div>
</div>
<div class="row">
<div class="small-2 columns">
<%= f.label :last_name, class: 'right inline' %>
</div>
<div class="small-4 columns">
<%= f.text_field :last_name, id: 'right-label' %>
</div>
<div class="small-6 columns">
<!-- empty space -->
</div>
</div>
<div class="row">
<div class="small-2 columns">
<%= f.label :email, class: 'right inline' %>
</div>
<div class="small-4 columns">
<%= f.email_field :email, id: 'right-label' %>
</div>
<div class="small-6 columns">
<!-- empty space -->
</div>
</div>
<div class="row">
<div class="small-2 columns">
<%= f.label :password, class: 'right inline' %>
</div>
<div class="small-4 columns">
<%= f.password_field :password, id: 'right-label' %>
</div>
<div class="small-6 columns">
<!-- empty space -->
</div>
</div>
<div class="row">
<div class="small-2 columns">
<%= f.label :password_confirmation, class: 'right inline' %>
</div>
<div class="small-4 columns">
<%= f.password_field :password_confirmation, id: 'right-label' %>
</div>
<div class="small-6 columns">
<!-- empty space -->
</div>
</div>
<div class="row">
<div class="small-2 columns">
<!--placeholder -->
</div>
<div class="small-10 columns">
<%= f.submit "Create account", class: 'button small' %>
</div>
</div>
<div class="row">
<div class="small-2 columns">
<!--placeholder -->
</div>
<div class="small-10 columns">
<%= render "devise/shared/links" %>
</div>
</div>
</div>
<div class="small-3 columns">
<!-- nothing here -->
</div>
<% end %>
</div>
控制台上的模型信息显示已添加属性:
User(id: integer, email: string, encrypted_password: string, reset_password_token: string, reset_password_sent_at: datetime, remember_created_at: datetime, sign_in_count: integer, current_sign_in_at: datetime, last_sign_in_at: datetime, current_sign_in_ip: string, last_sign_in_ip: string, created_at: datetime, updated_at: datetime, first_name: string, last_name: string)
【问题讨论】:
-
发布您的
controller代码。 -
由于我使用的是 Devise,我实际上并没有看到它在我的应用程序中使用的 RegistrationsController。但它在 GitHub:github.com/plataformatec/devise/blob/master/app/controllers/…
-
为什么不为您的用户创建个人资料?这种方式(为每个用户创建配置文件)比将列添加到数据库非常优化。无论如何,如果要添加列,则必须覆盖设计控制器。我希望this link 有用。
标签: ruby-on-rails forms authentication ruby-on-rails-4 devise