0

Deviseを再インストールしようとしています。Postgresql 上の Rails 4

Devise の指示に従い (devise gem/bundle install の追加など)、environments/application.rb/added my flash messages に変更を加えました

それから走った

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」する必要がありますか? (それさえできれば)

ありがとう!

4

2 に答える 2

2

Devise は User テーブルを作成しないと思います。rails generate devise UserDevise を User テーブルに関連付けるマイグレーションを生成するだけです。あなたの場合、 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」を実行します これもうまくいきます。

ただし、何らかの方法で Users テーブルにフィールドを追加する必要がある場合は、移行が有効です。

于 2016-01-22T13:54:45.347 に答える