Занятие №4 в рамках Курсов программирования Ruby on Rails.
Группа курсов «ВКонтакте»: http://vk.com/ruby_school
Организатор — Агентство интернет-маркетинга Мэйк makeagency.ru. Курсы проводятся на базе Кузбасского государственного технического университета, кафедры «Информационные и автоматизированные производственные системы».
1. #4 Ruby on Rails. Работа
с моделями
Миграции и связи
Денис Калесников, главный программист Мэйк
make.st
2. Миграции
Миграции - это удобный способ изменения схемы. Вам не нужно писать SQL
вручную, вы вызываете методы на языке Ruby и используете генераторы
Rails.
Каждую миграцию можно рассматривать как новую 'версию' базы данных.
Схема изначально ничего не содержит, а каждая миграция изменяет ее,
добавляя или убирая таблицы, столбцы или записи. Active Record также
обновляет ваш файл db/schema.rb, чтобы он соответствовал текущей
структуре вашей базы данных.
5. Генераторы моделей
Для добавления новой модели в папке с проектом нужно вызвать команду
bundle exec rails generate model Product name:string description:text
Этот генератор создаст следующие файлы:
Файл миграции XXXXXXXXXXXXXX_create_products.rb
Файл с классом Product - app/models/product.rb
Прочие файлы для тестирования.
6. Миграции. Внесение изменений в БД
В папке с проектом выполняем команду
bundle exec rake db:migrate
После этого данная миграция помечается как выполненная, то есть ее номер
вносится в таблицу versions в базе данных проекта.
7. Отмена миграции
В папке с проектом выполняем команду
bundle exec rake db:rollback
После этого, номер данной миграции удаляется из таблицы versions.
8. Проект “Реестр сотрудников”
В проекте должна быть сущность Employee, содержащая следующие поля:
Поле Тип данных Назначение
position string Должность
name string Полное имя
job_start datetime Дата начала работы
9. Задание 1
Добавить модель для хранения должностей на предприятии. Достаточно
хранить только название должности.
11. Связь многие-к-одному
Связь belongs_to устанавливает соединение
один-к-одному с другой моделью, когда один
экземпляр объявляющей модели
"принадлежит" одному экземпляру другой
модели.
На другой стороне связи belongs_to
используется связь has_many.