在我已经在SQLite中创建的表中添加索引?

时间:2012-02-26 22:20:29

标签: ruby-on-rails ruby database ruby-on-rails-3

您好我为我正在做的wiki应用程序创建了一个表。一开始我很简单,我有一个Questions表和一个Answers表。我现在想要添加用户。所以为此我创建了一个用户表,整个注册事情就准备好了。维基部分正在运行,用户部分正在运行,但我无法将它们合并在一起。

我首先创建了一个问题作为脚手架,如下所示:

   rails g scaffold Question title:string body:string 

然后回答如下:

   rails g scaffold Answer question_id:integer content:string

然后我尝试在创建Users表后添加users_id列:

   rails generate migration add_users_id_to_questions user_id:integer

然后我尝试通过在迁移文件中添加以下行来索引user_id列:

   class AddUserIdToQuestions < ActiveRecord::Migration
      def change
        add_column :questions, :user_id, :integer
      end
        add_index :questions, :user_id
   end

我做rake:db migrate但是在我运行迁移后它没有显示更改。有没有其他方法可以索引user_id,而不是通过向迁移文件添加列。我甚至运行了rake db:rollback,因此添加了user_id列,但是当我进行更改并运行rake db:migrate时,它给出了一个错误user_id不存在。如果您可以帮助我如何创建索引,将不胜感激。我运行Rails 3,SQLite作为我的数据库。 谢谢。

1 个答案:

答案 0 :(得分:5)

回滚,然后在add_index块内使用change重新运行迁移。

class AddUserIdToQuestions < ActiveRecord::Migration
  def change
    add_column :questions, :user_id, :integer
    add_index :questions, :user_id
  end
end