2015-10-15 1 views
1

Je suis encore assez nouveau dans le monde de Rails. J'ai travaillé sur une compétence à la fois alors j'ai pensé que je donnerais un crack à Omni-Auth. J'ai lu ce tutoriel sur SitePoint:Erreur lors de la migration: SQLite3 :: SQLException: aucune table de ce type: main.users

Rails Authentication with OAuth 2.0 and OmniAuth

Je suis trouver jusqu'au point où il m'a crée un modèle d'utilisateur et modifier le fichier de migration avant d'exécuter rake db:migrate. Voici mon fichier de migration en fonction de ces instructions:

class CreateUsers < ActiveRecord::Migration 
    def change 
    create_table :users do |t| 
     t.string :provider, null: false 
     t.string :uid, null: false 
     t.string :name 
     t.string :location 
     t.string :image_url 
     t.string :url 
     add_index :users, :providers 
     add_index :users, :uid 
     add_index :users, [:provider, :uid], unique: true 

     t.timestamps null: false 
    end 
    end 
end 

Mais quand je lance rake db:migrate il jette cette erreur:

SQLite3::SQLException: no such table: main.users: CREATE INDEX "index_users_on_providers" ON "users" ("providers")/Users/jrshafer/.rvm/gems/ruby-2.2.1/gems/sqlite3-1.3.11/lib/sqlite3/database.rb:91:in `initialize' 

Toute aide que vous pouvez fournir ce développeur en herbe serait très apprécié.

Vous pouvez voir la prise en pension complète ici: kronoTweeter GitHub Repo

Répondre

2

Vous devez créer votre table dans un bloc, puis ajouter les index. Mais dans votre code actuel, vous essayez d'ajouter les index dans le même bloc create_table.

Essayez de remplacer votre code actuel avec ce morceau de code:

class CreateUsers < ActiveRecord::Migration 
    def change 
    create_table :users do |t| 
     t.string :provider, null: false 
     t.string :uid, null: false 
     t.string :name 
     t.string :location 
     t.string :image_url 
     t.string :url 
     t.timestamps null: false 
    end # you have to end the create_table block here 

    # then you have to have the add_index statements 
    add_index :users, :providers 
    add_index :users, :uid 
    add_index :users, [:provider, :uid], unique: true 
    end 
end 

Lancez ensuite:

bundle exec rake db:migrate 

Cela devrait résoudre votre problème.

+1

c'est la réponse devrait être –