изменения в модели в рубине на рельсах - PullRequest
0 голосов
/ 19 октября 2011

Все,

Мне нужно уточнить, как изменения модели нужно отслеживать в ruby ​​на рельсах.Я начал с создания модели, скажем, с двумя полями: имя и адрес электронной почты.Вот что я сделал

  1. Создал модель, запустив

"Рельсы генерируют пользователя модели first_name: string last_name: string"

Это создалофайл модели

  1. Затем я добавил несколько проверок в файлы, созданные пользователем
  2. Использовал гем аннотации для аннотирования класса
  3. used "bundle exec rake db: migrate"чтобы переместить мою модель в базу данных, которая создала таблицы

Теперь я хочу добавить еще пару полей в модель.Какие шаги мне нужно выполнить?

  1. Добавлять ли столбцы в базу данных и выполнять какую-либо команду, чтобы модель (класс) синхронизировалась с БД?

  2. Удалить и воссоздать всю модель с новыми полями?

Каков рекомендуемый подход Venu

Ответы [ 3 ]

2 голосов
/ 19 октября 2011

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

Предполагая, что вы сделали

rails generate model user first_name:string last_name:string

ранее вы бы добавили поля, как это;

rails generate migration AddFieldsToModel new_field:string another_field:string....

Rails делает магию над AddFieldsToModel и вычисляет имя таблицы из значения для вас.

Как только вы создали миграцию, вы можете посмотреть на нее в db / migrations, а затем, если вы довольны, просто запустите

rake db:migrate

это обновит вашу базу данных и добавит в нее новые поля. Вам не нужно ничего делать с реальным файлом model.rb - но вам нужно будет повторно запустить задачу annotate, чтобы повторно перевести ее в файл model.rb.

0 голосов
/ 19 октября 2011

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

class DescriptionOfMigration < ActiveRecord::Migration

self.up 
 add_column :users, :email, :string  
end

self.down
 remove_column :users, :email
end

end

Это позволяет вам перенести модель в обе стороны.

0 голосов
/ 19 октября 2011

Я не уверен, какую версию rails вы используете .. но int rails 3.x это можно сделать как

rails generate migration add_fields_user

это создает файл в db / migrate / [timestamp] /add_fields_user.rb

теперь вы можете записать в файл и запустить rake db: migrate

add_column :users , :city, :string
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...