我设置了设计并且运行良好。然而,我还想将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'任何想法在这里出了什么问题?
答案 0 :(得分:1)
正如他在评论中提到的maxd,你已经运行了迁移,所以它不会再次运行。
您有两种选择。
删除您的数据库并重新创建它。
创建单独的迁移以添加您要查找的name
字段。
就个人而言,我会选择第二个。如果其他人已经运行了该迁移,他们将需要删除他们的数据库。如果你采用这种方法并且已经有生产数据,那么丢失这些数据应该被认为是不可接受的。
一般来说,如果您已成功运行迁移,则应避免编辑它。
答案 1 :(得分:1)
就像所有人都说的那样,您应该进行第二次迁移,并在您的:users表中添加一列。
文档链接: http://apidock.com/rails/ActiveRecord/ConnectionAdapters/SchemaStatements/add_column