0

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

我已按照 Devise 的说明进行操作(例如添加 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'

所以我知道错误告诉我不存在表“用户”,但设计应该创建这个,所以我的主要问题是......解决这个问题的最简单方法是什么?

另外,为什么不设计这个?这会导致未来的问题吗?

我是否应该在 postgres 中创建一个用户表,然后在设计中再次运行该命令并让它更改必要的文件并“设计”它?(如果它甚至会这样做)

谢谢!

4

2 回答 2

2

我认为 Devise 不会创建用户表。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之前运行。

于 2013-08-19T20:24:20.463 回答
0

喂猫的方法有很多(我对动物友好)

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

方法 2: - 使用 'rails generate devise User' 创建迁移 - 运行 'rake db:migrate' 这也会做得很好。

但是,迁移是一种方式,如果您需要以任何方式在用户表中添加其他字段。

于 2016-01-22T13:54:45.347 回答