Добавление индекса к таблице, которую я уже создал в SQLite? - PullRequest
2 голосов
/ 27 февраля 2012

Привет, я создал таблицу для вики-приложения, которое я делал. Сначала было довольно просто: у меня была таблица вопросов и таблица ответов. Теперь я хочу добавить пользователей к нему. Итак, для этого я создал таблицу пользователей, и вся процедура регистрации готова. Часть вики работает, а часть пользователей работает, но у меня возникли проблемы, чтобы объединить их вместе.

Сначала я создал Вопросы в качестве основы:

   rails g scaffold Question title:string body:string 

Тогда отвечает следующим образом:

   rails g scaffold Answer question_id:integer content:string

Затем я попытался добавить столбец users_id после создания таблицы Users:

   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

Я делаю рейк: db переносится, но после запуска переноса изменения не отображаются. Есть ли другой способ, которым я могу индексировать user_id, кроме добавления столбца в файл миграции. Я даже запустил rake db: rollback, поэтому добавление столбца user_id пропало, но когда я внес изменения и запустил rake db: migrate, это выдает ошибку user_id, которой не существует. Был бы очень признателен, если бы вы могли помочь мне, как создать индекс. Я запускаю Rails 3, SQLite в качестве моей БД. Спасибо.

1 Ответ

5 голосов
/ 27 февраля 2012

Откат, а затем перезапустите миграцию с add_index внутри блока change.

class AddUserIdToQuestions < ActiveRecord::Migration
  def change
    add_column :questions, :user_id, :integer
    add_index :questions, :user_id
  end
end
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...