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

Философия ActiveRecord

Время на прочтение 2 мин
Количество просмотров 24K
Сегодня в нашей заметке мы рассмотрим паттерн под названием 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 рассказов непочатый край. Смелым — не ждать продолжения, а пробовать-пробовать-пробовать.
Теги:
Хабы:
+14
Комментарии 46
Комментарии Комментарии 46

Публикации

Истории

Работа

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

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

Московский туристический хакатон
Дата 23 марта – 7 апреля
Место
Москва Онлайн
Геймтон «DatsEdenSpace» от DatsTeam
Дата 5 – 6 апреля
Время 17:00 – 20:00
Место
Онлайн
PG Bootcamp 2024
Дата 16 апреля
Время 09:30 – 21:00
Место
Минск Онлайн
EvaConf 2024
Дата 16 апреля
Время 11:00 – 16:00
Место
Москва Онлайн