Ruby: ActiveRecord (ORM)
Теория: Модель
Модель как класс
Модель — это воплощение понятия предметной области в коде приложения. В Active Record каждая модель представлена классом в коде и таблицей в базе данных:
Модель = Класс только в классовых языках. Технически она может быть чем угодно, это зависит от языка.
Связь Модель-Таблица — это особенность паттерна Active Record. В другом подходе все может быть по-другому.
Разберем, что необходимо делать, чтобы модель работала.
Для работы модели нужно создать таблицу в базе данных. В веб-фреймворках это делается через миграции, которые создаются автоматически при генерации модели из командной строки:
В нашем же случае используется файл db/schema.rb, в котором есть определение таблицы courses:
Этого описания достаточно для начала работы. Теперь можно создавать сущности, сохранять их в базу и обновлять:
Этот код работает благодаря подходу «соглашения вместо конфигурации» — Convention Over Configuration. Нам не пришлось явно указывать имя таблицы, с которой связана модель. Active Record автоматически получил ее имя, выполнив приведение имени класса к нижнему регистру и сделав его во множественном числе.
Еще Active Record проанализировал структуру этой таблицы, чтобы определить первичный ключ, поля и их типы. Эта информация используется внутри модели, чтобы сохранять, обновлять и загружать данные в код.
Из примера выше видно, что при создании или обновлении сущности, используется метод save(). А Active Record сам распознает, что сейчас происходит: создание или обновление.
Когда сущность сохранилась в базу, ее можно извлечь. Самый простой способ сделать это — воспользоваться статическим методом find($id). Он выполняет поиск по первичному ключу.
Выводы
Active Record — это удобный способ взаимодействия с базой данных. Он скрывает сложности SQL и позволяет нам работать с данными, как с обычными объектами кода. Соглашения, которые были приняты в Rails, автоматизируют большинство задач, что делает код легким для чтения и понимания.

