2009-11-13 1 views
2

Я начинаю Rails и пытаюсь понять, как работает миграция рельсов. Я создал леску, как:Вопрос относительно миграции рельсов и синхронизации просмотров

script/generate scaffold Item col1:string col2:text 
rake db:migrate 

Я хотел бы добавить еще один COL4 с помощью миграции:

Я создал миграцию следующим образом:

class AddCol4 < ActiveRecord::Migration 
    def self.up 
     add_column  :items, :col4, :numeric 
     Item.reset_column_information 
    end 

    def self.down 
     remove_column :items, :col4 
    end 
end 

Когда я запускаю грабли БД: мигрировать добавляется новый столбец. Однако представление не синхронизировано. Я должен вручную добавить новый столбец в представление? Есть ли способ автоматического восстановления модели/представления с использованием новых столбцов таблицы?

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

ответ

2

К сожалению, вам необходимо изменить представление вручную. Представление создается путем запуска команды script/generate scaffold. Миграции меняют только базу данных. Технически вы можете повторить команду эшафот и обновить ее. Он спросит вас, хотите ли вы перезаписать предыдущий файл, однако, если вы идете по этому маршруту, вам все равно нужно указать ВСЕ нужные столбцы. Вы не можете просто добавить некоторые здесь и там.

Если вы на ранней стадии разработки, вы можете воспользоваться этим путем. Просто запустите

script/destroy scaffold Item 

, а затем повторно

script generate scaffold Item col1:string col2 string col3:numeric 

Есть некоторые динамические расширения строительных лесов доступны такие, как ActiveScaffold если вы создаете что-то, что будет видеть только несколько пользователей, но я бы рекомендовал делать HTML самостоятельно так как это всегда будет так, как вы хотите.

Я не могу найти ни одного из других плагинов динамических лесов. Там было довольно много ...