Rails приложение, установка Devise, rake db: ошибка переноса

Попытка переустановить Devise. Rails 4 на Postgresql

Я следовал инструкциям Devise (например, добавление devise gem / bundle install) и внес изменения в мою среду / application.rb / добавил свои флеш-сообщения

Потом побежал

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 не создал это? Это вызовет будущие проблемы?

Должен ли я создать таблицу Users в postgres, а затем снова запустить команду в Devise и разрешить ей изменять необходимые файлы и "devise-ify"? (Если он вообще это сделает)

Спасибо!

2 ответа

Решение

Я не думаю, что Devise создает таблицу пользователей. rails generate devise User просто генерирует миграцию, которая связывает Devise с таблицей 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, указав соответствующий файл.

Есть много способов кормить кошку (я дружелюбный к животным)

Метод 1: 1. rails db create 2. rails db setup Выполняет ваш предыдущий код миграций и создает пользователей и другие миграции.

Метод 2: - Создайте миграцию, используя 'rails generate devise User' - запустите 'rake db:migrate'. Это также хорошо подойдет.

Но миграция - это путь, если вам нужно каким-либо образом добавить дополнительные поля в таблицу Users.

Другие вопросы по тегам