Как стать автором
Обновить

Философия ActiveRecord

Время на прочтение2 мин
Количество просмотров25K
Сегодня в нашей заметке мы рассмотрим паттерн под названием ActiveRecord, который представляет из себя средство работы с базой данных. Сразу же попрошу профессионалов сильно такого рода заметки не критиковать. Написаны они лишь для того, чтобы заитересовать, дать стимул читать такие книженции как Agile Web Development with Ruby on Rails.

ActiveRecord правильнее даже будет назвать реализацией технологии ORM:
«ORM (англ. Object-relational mapping) — технология программирования, которая связывает базы данных с концепциями объектно-ориентированных языков программирования, создавая «виртуальную объектную базу данных»

ActiveRecord в Ruby on Rails очень меня порадовал, когда впервые с ним познакомился. Его реализации можно найти в разных веб фреймворках, как RoR, CakePHP, Castle и так далее. Идея его состоит в том, что каждая таблица базы данных превращается в класс, каждая строка таблицы в объект этого класса. ActiveRecord обеспечивает методы работы с данными каждого столбца таблицы.

Скажем, пусть у нас будет таблица с данными Хабра-населения users, тогда добавить запись о новом комраде, желающем пополнить эти стройные ряды можно будет таким образом:
x = User.new
x.name = "Роман Иванов"
x.login = "ivanov"
x.email = "no@reply.com"
x.homepage = "ivanov-thebest.com -- просто лучший и все здесь"
x.save

Эти магические операции создадут и отправят в базу следующий запрос:

INSERT INTO users (name, login, email, homepage) VALUES
\ ('Роман Иванов', 'ivanov', 'no@reply.com', 'ivanov-thebest.com -- просто лучший и все здесь');


С не меньшим успехом можно искать и выбирать записи из базы таким образом:
#найдем всех пользователей
f = User.find(:all)
#найдем пользователя с логином ivanov
search_str = "ivanov"
f = User.find(:first, :conditions => ["login = ?", search_str])

Такой прием автоматически защитит нас от SQL-инъекции (это будет сделано Рельсам за нас в варианте приведенном выше), а также сгенерирует следующий запрос:

SELECT * FROM users WHERE login = 'ivanov'

Благодаря Рельсам и их заботливым разработчикам приведенное выше можно сделать еще проще:

f = User.find_by_login("ivanov")

Вот, в самом кратком кратце все, снасти расставлены :) А кто заинтересовался советую начать со странички РельсоВики посвященной ActiveRecord, а дальше (если сразу хочется поперед батька в пекло) открыть Active Record Reference Documentation. Ленивым предлагаю продолжать читать этот блог, еще чего-нибудь обязательно расскажем, благо про ActiveRecord рассказов непочатый край. Смелым — не ждать продолжения, а пробовать-пробовать-пробовать.
Теги:
Хабы:
Всего голосов 24: ↑19 и ↓5+14
Комментарии46

Публикации

Истории

Работа

Программист Ruby
8 вакансий
Ruby on Rails
9 вакансий

Ближайшие события

27 августа – 7 октября
Премия digital-кейсов «Проксима»
МоскваОнлайн
19 сентября
CDI Conf 2024
Москва
20 – 22 сентября
BCI Hack Moscow
Москва
24 сентября
Конференция Fin.Bot 2024
МоскваОнлайн
24 сентября
Astra DevConf 2024
МоскваОнлайн
25 сентября
Конференция Yandex Scale 2024
МоскваОнлайн
28 – 29 сентября
Конференция E-CODE
МоскваОнлайн
28 сентября – 5 октября
О! Хакатон
Онлайн
30 сентября – 1 октября
Конференция фронтенд-разработчиков FrontendConf 2024
МоскваОнлайн
3 – 18 октября
Kokoc Hackathon 2024
Онлайн