2014-11-23 4 views
0

У меня есть ассоциации, установленные в исследовании модели следующим образомРубин на рельсах - обратный add_column, add_index миграция

attr_accessible :name, :questions_attributes 
has_many :questions 

и в модели вопроса

attr_accessible :content, :survey_id, :answers_attributes 
belongs_to :survey 

У меня есть миграции, которая добавляет question_id обозревать таблицу , но я понял, что эта миграция не понадобится как . Я уже определил их ассоциации в модели. Правильно ли я понимаю?

Если мое понимание верное, я бы хотел обратить вспять эту миграцию.

Я добавил последние 2 строки, начиная с remove и пробежал rake db:migrate , но он ничего не делает.

def change 
    add_column :surveys, :question_id, :integer 
    add_index :surveys, :question_id 
    remove_column :surveys, :question_id, :integer 
    remove_index :surveys, :question_id 
end 

ответ

2

Как я понимаю, вы хотите откат миграции. Если да, то вы можете использовать приведенный ниже синтаксис для этого

rake db:rollback STEP=n 

     or 


rake db:migrate:down VERSION=<version_number_of_migration> 

который rollsback особой миграции

+0

Привет, спасибо за ваш вклад. Разве не обязательно было добавлять этот индекс в связанную таблицу в первую очередь, поскольку они уже определены в моделях? –

+0

Вы имеете в виду вопрос в справочной таблице? –

+0

Да, я хочу знать, нужно ли добавлять этот столбец, когда ассоциации определены в модели –

2
def up 
    add_column :surveys, :question_id, :integer 
    add_index :surveys, :question_id 
end 

def down 
    remove_index :surveys, :question_id 
    remove_column :surveys, :question_id 
end 

вверх метод выполняются на rake db:migrate, авансовый метод выполняется на rake db:rollback Вы не можете полагаться только по методу change, из-за порядка, в котором необходимо выполнить откат (сначала удалить индекс, затем удалить столбец)

Редактировать: Закон ually, вы можете сделать это только с change в Rails 3.2+

def change 
    add_column :surveys, :question_id, :integer 
    add_index :surveys, :question_id 
end 
0

Да его всегда необходимый для написания миграции добавить question_id в обзорной таблице

только Декларирование Ассоциация не хватает

Вашего migrtaion хотел бы это

защиту изменить add_reference: опросы, вопрос:, индекс: истинный конец

В любом случае откат миграции, если у вас есть изменения только в вашей системе. Dont попытаться откатить когда эти миграции побежал в различных средах

Чтобы откатить грабли БД: мигрировать: Откат VERSION = «Отметка миграции файла»

Смежные вопросы