2011-10-19 5 views
2

Я начинаю с большого шерстяного мира Ruby on Rails, и я пытаюсь поднять голову вокруг строительных лесов и моделей. (Кью, я дизайнер)Rails 3: обновить базу данных и леса

Я использую рельсы генерировать команду эшафота

rails generate scaffold Lesson title:string description:text 

Но можно обновить таблицу урока с новым ключом, значение с рельсами?

Я пробовал:

rails generate model Lesson title:string description:text dtstart:datetime 

Но когда я бегу БД: мигрировать это не удается, и единственный путь вокруг, я не знаю, чтобы сделать это, чтобы удалить все эшафот и его регенерации.

Я уверен, что должен быть простым решением :)

Я думаю (но им не уверен, что это из-за файл дб/development.sqlite3, которая не обновляется, когда я удалить содержимое вручную, а затем запустить bd: migrate) есть ли способ обновить evrything сразу?

ответ

5

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

rails g migration AddStartToLesson 

Затем открыть файл миграции и добавьте код, который добавит эти поля. Это, вероятно, в конечном итоге выглядит примерно так:

class AddStartToLesson < ActiveRecord::Migration 
    def self.up 
    add_column :lessons, :start, :datetime 
    end 

    def self.down 
    remove_column :lessons, :start 
    end 
end 

И вам придется обновить некоторые мнения - вероятно _form.html.erb, чтобы получить поле формы для ввода этих данных, и index.html .erb и show.html.erb, чтобы отобразить его. (они, вероятно, находятся в приложении/просмотрах/уроках /)

+1

1.3 Изменение миграций Иногда вы ошиблись при написании перевода. Если вы уже выполнили миграцию, вы не можете просто изменить перенос и снова выполнить миграцию: Rails считает, что он уже выполнил миграцию, и ничего не сделает при запуске rake db: migrate. Вы должны отменить миграцию (например, с помощью rake db: rollback), отредактируйте свою миграцию, а затем запустите rake db: migrate, чтобы запустить исправленную версию. –

+0

@YannickSchall Хорошая точка ... при разработке часто проще откатываться и переписывать миграцию, которая создает модель, а не писать новую миграцию. – MrTheWalrus

+0

Но возможно ли изменить структуру таблицы базы данных во время разработки, не имея необходимости регенерировать эшафот? –

0

Я думаю, вы также должны обновить (по крайней мере, на рельсах 5) свой lesson_params в classes_controller.rb, чтобы разрешить передачу новых параметров из представления в модель.

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