- Структура каталогов Rails приложения
- Rails генераторы
- Миграции
- Создание модели в Rails приложении. ActiveRecord, соглашения в именовании класса модели и таблицы в базе данных
Библиотека ActiveRecord является зависимой по отношению к фреймворку Rails, однако может быть использована и самостоятельно. ActiveRecord
позволяет вашим классам-моделям внутри Rails приложения обращаться к базе данных и выполнять CRUD операции над данными. Для создания модели достаточно поместить Ruby класс в каталог app/models
, унаследовать его от класса ActiveRecord::Base
и создать соответствующую таблицу в базе данных. Проще всего создать модель с помощью встроенного в Rails генератора:
rails g model User name:string hashed_password:string salt:string
После выполнения данной команды генератор model
создаст и Ruby класс модели, и соответствующую миграцию в каталоге db/migrate
. Вы можете смело редактировать миграцию добавляя нужные колонки или изменяя их тип данных.
Для того, чтобы применить миграцию (изменить схему базы данных, то есть создать соответствующую модели таблицу в базе данных) необходимо выполнить команду rake db:migrate
. Откат миграции осуществляется командой rake db:rollback
. Будьте внимательны, откат миграции, которая создавала новую таблицу, уничтожит таблицу целиком вместе со всеми данными в этой таблице! Иными словами, если в таблице users
у вас существуют какие-то данные и вы исполните команду rake db:rollback
для отката миграции, таблица users
вместе с данными будет уничтожена.
После применения миграции вы можете запустить консоль Rails приложения командой rails c
и работать с моделью User
. Поскольку класс User
наследует от класса ActiveRecord::Base
, вы получаете в своё распоряжение весь интерфейс ActiveRecord.
Важно помнить, что Rails следует принципу Convention over configuration (преобладание соглашений над конфигурацией проекта). Это означает, что вместо дополнительных файлов с конфигурациями проекта достаточно следовать определённым соглашениям, и всё будет работать само собой. В нашем случае соглашение формулируется так: Имя таблицы в базе данных должно быть именем модели во множественном числе. Иными словами, для модели User
таблица должна называться users
, для модели Task
- tasks
. Если модель имеет составное имя, множественное число в имени таблицы применяется к последнему слову: MotherShip
- mother_ships
. Разумеется, существуют методы ActiveRecord
, которые позволяют задать для модели имя таблицы. Это полезно, если вы пишете Rails приложение, используя уже существующую базу данных.
Теперь познакомимся с API ActiveRecord
и попробуем найти методы которые позволяют:
-
Выбрать запись из базы данных по её уникальному идентификатору (первичному ключу)
-
Выбрать
n
записей из базы данных -
Выбрать первую запись, удовлетворяющую определённым условиям (условия передаются в качестве аргумента метода в виде хэша)
-
Выбрать все записи из таблицы, однако по
n
штук за одинSQL
запрос -
Выбрать все записи, удовлетворяющие определённым условиям (условия передаются в качестве аргумента метода в виде хэша)
-
Выбрать записи в определённом порядке
-
Получить массив со значениями для определённой колонки для строк из таблицы в базе данных
-
Сохранить модель в базе данных
-
Обновить данные модели в базе данных
-
Удалить модель из базы данных
-
Проверить, существует ли в базе данных модель с определёнными условиями
-
Удалить все строки из таблицы в базе данных для определённой модели
Коротко опишите своё понимание того, зачем нужен ActiveRecord
. Почему используются Ruby методы для работы с моделями, вместо SQL
запросов?
Создайте отдельный от Rails приложения файл user.rb
и превратите его в модель для работы с той же таблицей users
, с которой работает наше Rails приложение Context.
- GeekBrains
- Электронная почта:
[email protected]
- Slack канал