在设计中包含名称

时间:2015-03-10 15:15:41

标签: ruby-on-rails ruby

我设置了设计并且运行良好。然而,我还想将name元素添加到用户。

因此我在rake db:migrate文件中添加了这个:

  create_table(:users) do |t|
    t.string :name #added
    ...

并在我的application_helper

中添加了这个
  before_action :configure_permitted_parameters, if: :devise_controller?

  protected

 def configure_permitted_parameters
  devise_parameter_sanitizer.for(:sign_up) << :name
 end

并在我的视图中添加了这个(注册/新)

 <div class="form-group">
    <%= f.label :name %>
    <%= f.text_field :name, autofocus: true, class: 'form-control', placeholder: "Enter name" %>
  </div>

运行rake db:migrate

但是现在当我尝试运行注册时,我得到了      #

的未定义方法`name'

任何想法在这里出了什么问题?

2 个答案:

答案 0 :(得分:1)

正如他在评论中提到的maxd,你已经运行了迁移,所以它不会再次运行。

您有两种选择。

  1. 删除您的数据库并重新创建它。

  2. 创建单独的迁移以添加您要查找的name字段。

  3. 就个人而言,我会选择第二个。如果其他人已经运行了该迁移,他们将需要删除他们的数据库。如果你采用这种方法并且已经有生产数据,那么丢失这些数据应该被认为是不可接受的。

    一般来说,如果您已成功运行迁移,则应避免编辑它。

答案 1 :(得分:1)

就像所有人都说的那样,您应该进行第二次迁移,并在您的:users表中添加一列。

文档链接: http://apidock.com/rails/ActiveRecord/ConnectionAdapters/SchemaStatements/add_column