首页 > 解决方案 > 在 Rails 上创建用户的设计不起作用

问题描述

我创建了一个迁移,用于通过Devise生成用户模型,如下所示:

  rails g devise User

然后我通过Devise创建一些视图:

  rails g devise:views

现在,当我运行rails db:migrate时,出现以下错误:

C:\Users\andri\Desktop\hoagieShop\hoagieShop>rails db:migrate
== 20190202141046 AddDeviseToUsers: migrating =================================
-- change_table(:users)
rails aborted!
StandardError: An error has occurred, this and all later migrations canceled:

SQLite3::SQLException: no such table: users: ALTER TABLE "users" ADD "email" varchar DEFAULT '' NOT NULL
C:/Users/andri/Desktop/hoagieShop/hoagieShop/db/migrate/20190202141046_add_devise_to_users.rb:7:in `block in up'
C:/Users/andri/Desktop/hoagieShop/hoagieShop/db/migrate/20190202141046_add_devise_to_users.rb:5:in `up'
bin/rails:4:in `require'
bin/rails:4:in `<main>'

Caused by:
ActiveRecord::StatementInvalid: SQLite3::SQLException: no such table: users: ALTER TABLE "users" ADD "email" varchar DEFAULT '' NOT NULL
C:/Users/andri/Desktop/hoagieShop/hoagieShop/db/migrate/20190202141046_add_devise_to_users.rb:7:in `block in up'
C:/Users/andri/Desktop/hoagieShop/hoagieShop/db/migrate/20190202141046_add_devise_to_users.rb:5:in `up'
bin/rails:4:in `require'
bin/rails:4:in `<main>'

Caused by:
SQLite3::SQLException: no such table: users
C:/Users/andri/Desktop/hoagieShop/hoagieShop/db/migrate/20190202141046_add_devise_to_users.rb:7:in `block in up'
C:/Users/andri/Desktop/hoagieShop/hoagieShop/db/migrate/20190202141046_add_devise_to_users.rb:5:in `up'
bin/rails:4:in `require'
bin/rails:4:in `<main>'
Tasks: TOP => db:migrate
(See full trace by running task with --trace)

这是迁移中的代码:

class AddDeviseToUsers < ActiveRecord::Migration[5.0]
  def self.up
    change_table :users do |t|
      ## Database authenticatable
      t.string :email,              null: false, default: ""
      t.string :encrypted_password, null: false, default: ""

      ## Recoverable
      t.string   :reset_password_token
      t.datetime :reset_password_sent_at

      ## Rememberable
      t.datetime :remember_created_at

    end

    add_index :users, :email,                unique: true
    add_index :users, :reset_password_token, unique: true

  end

  def self.down
    raise ActiveRecord::IrreversibleMigration
  end
end

有谁明白为什么会这样?我很感激任何帮助!

标签: ruby-on-railsdevise

解决方案


试试这个命令

rake db:drop 
rake db:create 
rake db:migrate

推荐阅读