- Работа с базой данных. Создать строчку в таблице, вытащить, удалить, поправить. Учесть связи между сущностями, хранящимися в таблицах. Валидация данных, сохраняющихся в базу данных, в том числе и учитывая связи.
- Работа с роутингом урлов до конкретных методов. Выяснение кто пришел: браузер, Ajax-запрос, веб-сервисовый клиент или что-то еще.
- Работа с отрисовкой данных. Шаблоны отрисовки (так что бы минимальное количество повторений). Автогенерация яваскрипта для обновления страницы по Ajax запросу. Генерация валидного XML-я, RSS-фидов. Генерация WSDL-описания и форматирование XML-RPC и SOAP ответов. Хорошая поддержка форм с автовытаскиванием значений из данных и поддержкой валидации.
Эти три вещи на самом деле являются классической схемой разделения приложения на три уровня MVC. Model, View и Controller.
ActiveRecord
На уровне модели в Rails находится ActiveRecord. Рассмотрим работу с этим классом.
Пусть в системе есть объект Article и он сериализуется в таблицу articles. Для того, что бы получить функциональность CRUD от базы данных достаточно всего-навсего объявить такой класс:
class Article < ActiveRecord::Base
end
Он уже будет уметь все сохранять, вытаскивать, править и удалять:
a = Article.new
a.title = “Моя первая статья”
a.body = “Правда, пустая”
a.save
a_id = a.id
a = Article.find a_id
a.update_attribute(“body”, “Теперь здесь есть текст”)