Rails app,安装Devise,rake db:migrate error

时间:2013-08-19 03:48:53

标签: ruby-on-rails devise dbmigrate

尝试重新安装Devise。 Postgresql上的Rails 4

我按照Devise的说明(比如添加设计gem / bundle install)并对我的环境/ application.rb进行了更改/添加了我的flash消息

然后跑

rails generate devise User

得到了这个......

invoke  active_record

    create    db/migrate/20130819025615_add_devise_to_users.rb
    insert    app/models/user.rb
    route  devise_for :users

但问题是当我尝试运行rake db:migrate时出现此错误

== AddDeviseToUsers: migrating =============================================== -- change_table(:users) rake aborted! An error has occurred, this and all later migrations canceled: PG::UndefinedTable: ERROR: relation "users" does not exist : ALTER TABLE "users" ADD COLUMN "email" character varying(255) DEFAULT '' NOT NULL/Users/name/.rvm/gems/ruby-2.0.0-p195/gems/activerecord-4.0.0/lib/active_record/connection_adapters/postgresql/database_statements.rb:128:in exec'

所以我理解错误告诉我没有表'用户'存在,但是Devise应该创建这个,所以我的主要问题是......解决这个问题最简单的方法是什么?

另外,为什么没有Devise创造这个?这会引起未来的问题吗?

我应该在postgres中创建一个Users表,然后在Devise中再次运行该命令并让它更改必要的文件和“devise-ify”吗? (如果它甚至会这样做)

谢谢!

2 个答案:

答案 0 :(得分:2)

我不认为Devise会创建一个User表。 rails generate devise User只会生成一个将Devise与User表相关联的迁移。在您的情况下,用户表尚不存在。因此,错误。首先,您应该编写一个创建User表的迁移。例如:

class CreateUsers < ActiveRecord::Migration
  def change
    create_table :users do |t|
    end
  end
end

然后运行rake db:migrate。通过适当地命名文件,确保在 db / migrate / 20130819025615_add_devise_to_users.rb之前运行创建表的迁移。

答案 1 :(得分:0)

养猫的方法有很多种(我是动物友好的)

方法1: 1. rails db create 2. rails db setup 它执行早期的迁移代码并创建用户和其他迁移。

方法2: - 使用&rbsp; rails generate devise User&#39;创建迁移。 - 运行&#39; rake db:migrate&#39; 这样做也很好。

但是,如果您需要以任何方式在“用户”表中添加其他字段,则可以采用迁移方式。