Rails 3: обновление базы и скаффолда - PullRequest
2 голосов
/ 20 октября 2011

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

Я использую команду rails generate scaffold

rails generate scaffold Lesson title:string description:text

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

Я пытался:

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

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

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

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

Ответы [ 2 ]

5 голосов
/ 20 октября 2011

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

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 для их отображения. (они, вероятно, в приложении / views / уроки /)

0 голосов
/ 30 марта 2017

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

...