我对Rails世界还很陌生。我一直在研究一项技能,所以我想我会给Omni-Auth twitter一个破解。我一直在阅读SitePoint上的这个教程:
Rails Authentication with OAuth 2.0 and OmniAuth
我发现直到创建用户模型并在运行rake db:migrate
之前修改迁移文件。这是我的迁移文件,基于这些说明:
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
但是当我运行rake db:migrate
时,它会抛出此错误:
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'
您可以为这位有抱负的开发者提供任何帮助。非常感谢。
您可以在此处查看完整的回购: kronoTweeter GitHub Repo
答案 0 :(得分:2)
您应该在一个块中创建表,然后添加索引。但是在当前代码中,您尝试在同一 Class(
var1, var2, var3, var4
);
块中添加索引。
尝试使用以下代码替换当前代码:
create_table
然后运行:
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
这可以解决您的问题。