Навигация
Задача А: ведение учета товаров
Чем заняться на досуге
Вот несколько заданий, которые вы можете попробовать выполнить самостоятельно.
• Метод validates_length_of (описание которого приводится в подразделе
«Помощники, используемые в процессе проверки» раздела 19.1) проверяет
длину свойства модели. Добавьте к модели товаров (product) проверку на то,
Что нам удалось сделать
В данной главе мы заложили основы для интернет-магазина.
• Мы создали базу данных, предназначенную для разработки, и настроили наше
Rails-приложение на ее использование.
• Мы использовали миграции для создания и модификации схемы базы данных,
предназначенной для разработки, и заполнили базу проверочными данными.
Шаг А4: улучшение внешнего вида перечня товаров
У нашего заказчика есть еще одно, последнее пожелание (кажется, у заказчиков
такое пожелание есть всегда). Перечень товаров имеет не слишком приятный вид.
Нельзя ли его «хоть как-то приукрасить»?
И раз уж мы этим занялись, то нельзя ли наряду с URL изображения показать
Шаг A3: проверка приемлемости данных
Пробуя работать с результатами выполнения второго шага, наш заказчик кое-что
заметил. Если он вводил неверную цену или забывал ввести описание товара,
приложение с легкостью воспринимало данные формы и добавляло запись в базу
данных. Если отсутствие описания может лишь ввести в замешательство, то цена,
Шаг А2: добавление пропущенного столбца
Итак, мы показали заказчику работу кода, принадлежащего временной платформе,
объяснив ему, что это всего лишь своеобразный действующий макет. Ему было
приятно так быстро увидеть работоспособный фрагмент приложения. Но после
краткого ознакомления он заметил некоторые упущения — не были указаны
цены товаров.
Временные платформы Rails
За весьма краткий начальный период реализации проекта мы забежали далеко
вперед, поэтому потратим немного времени на более подробное осмысление нашего
последнего шага.
Временная платформа Rails — scaffold — представляет собой автоматически
генерируемую среду управления моделью.
Создание приложения по учету товаров
Теперь можно считать всю подготовительную работу завершенной. Мы создали
приложение Depot, являющееся проектом Rails. Создали базу данных, предназначенную
для разработки, и настроили приложение на подключение к этой базе
данных. Мы создали контроллер admin и модель product и воспользовались миграцией
Создание контроллера
Когда мы рассматривали MVC-архитектуру, то поняли, что для согласования всех
действий, необходимых для учета товаров, нам нужен контроллер. Назовем его
admin. Создайте его, воспользовавшись одним из подручных Rails-генераторов:
depot> ruby script/generate controller admin
exists app/controllers/
exists app/helpers/
create app/views/admin
exists test/functional/
create app/controllers/admin_controller.rb
Создание модели и таблицы товаров
Вернемся к рис. 5.3, где схематически было изображено основное содержимое
таблицы товаров. Настало время воплотить эту схему в реальность. Нам нужно
создать таблицу базы данных и Rails-модель, позволяющую приложению использовать
эту таблицу.
Теперь нам нужно решить вопрос о том, как определить структуру таблицы.
Проверка конфигурации
Перед тем как продолжить путь, нам, пожалуй, нужно проверить только что
созданную конфигурацию — мы можем убедиться в том, что Rails способна подключиться
к нашей базе данных и у нее имеются права доступа, необходимые для
создания таблиц. Из каталога верхнего уровня, принадлежащего вашему приложению,