19.3.1. Принципы и техника
19.3.1. Принципы и техника
Каркас Rails построен на основе паттерна Модель-Вид-Контроллер (Model-View-Controller — MVC). Каждое приложение естественно разбивается на модели (моделирующие предметную область), виды (с помощью которых информация представляется пользователю и организуется возможность взаимодействия) и контроллеры (играющие роль арбитров между моделями и видами).
В основу поведения Rails как каркаса положены определенные принципы. Один из них — «принцип минимизации кода»: не пишите код для связывания одного с другим, если такое связывание можно организовать автоматически.
С ним также связан принцип «примата соглашений над конфигурацией». Придерживаясь ряда заранее оговоренных стилей кодирования и именования, можно обойтись почти без конфигурирования (и приблизиться к идеальной среде с «нулевым конфигурированием»).
Rails прекрасно справляется с автоматизацией не слишком сложных задач. Если это имеет смысл, он сам генерирует код, избавляя программиста от необходимости писать его вручную.
Web-приложения часто хранят данные в базе, и Rails обеспечивает бесшовную интеграцию с базой данных. У Web-каркасов наблюдается тенденция проявлять «склонность» к какому-то конкретному объектно-реляционному отображению (object-relational mapper, ORM), и Rails — не исключение. Стандартным для Rails является отображение ActiveRecord, которое мы рассматривали в главе 10.
Базы данных описываются в файле config/database.yaml — одном из немногих необходимых конфигурационных файлов (конечно же, в формате YAML). В нем перечислены три разных базы данных: для разработки, для тестирования и для промышленной эксплуатации. На первый взгляд, это перебор, но в действительности такая схема оказывается очень удобной.
Rails генерирует для вас пустые модели и контроллеры. В ходе редактирования моделей вы определяете связи между таблицами базы данных с помощью таких методов, как has_many и belongs_to (на самом деле их гораздо больше). Поскольку между моделями и таблицами есть соответствие, то написанный вами код заодно определяет и связи между самими моделями. Для контроля данных служат такие методы, как validates_presence_of (проверяет, что данные присутствуют) и validates_uniqueness_of (проверяет, что данные уникальны).
В результате создания приложения Rails командой вида rails appname вы получаете каталог appname с такой структурой:
арр
controllers
helpers
models
views
config
db
doc
lib
log
public
script
test
vendor
Большая часть кода находится в каталоге арр. Как видите, сама его структура следует паттерну MVC.
Схемы баз данных находятся в каталоге db. Инкрементные файлы миграции тоже попадут сюда.
В Rails есть концепция «обстраивания» (scaffolding), которая очень упрощает жизнь. Если ввести команду script/generate scaffold Product (Product — имя модели), то для таблицы Products (обратите внимание на множественное число) будет сгенерирована функциональность «создать-обновить-удалить».
Можно обстроиться и не генерируя никакой код, достаточно вызвать внутри контроллера Product метод scaffold:
class ProductController < ActiveRecord::Base
scaffold :product
end
Здесь мы достигаем той же цели, но не записываем никакой код на диск. Оба способа допустимы. Конечно, в результате обстраивания создаются страницы ввода/обновления, которые вполне функциональны, но не слишком красивы; почти всегда вы захотите заменить их чем-то более симпатичным. Тем не менее такая техника взаимодействия с базой данных полезна, особенно на этапе разработки.
В старых версиях Rails расхождение между ActiveRecord и базой данных было более существенным. Недавно появившаяся концепция миграции делает управление базой данных проще. То же касается и уже существующих в базе данных таблиц, работать с которыми было трудно; сейчас можно создать файл schema.rb, в котором будет перечислены все существующие таблицы (см. также rake tasks db:schema:load и db:schema:dump).
Более 800 000 книг и аудиокниг! 📚
Получи 2 месяца Литрес Подписки в подарок и наслаждайся неограниченным чтением
ПОЛУЧИТЬ ПОДАРОКДанный текст является ознакомительным фрагментом.
Читайте также
Что такое пароль и техника безопасности
Что такое пароль и техника безопасности Пароль – это очень важная защита. Отнестись к этому нужно со всей серьёзностью. Если вы решили, что кто-то имеет доступ к вашим данным, немедленно смените пароль.Существует несколько правил, как его записать.1. Купите блокнот или
4.3. Техника CSS Sprites
4.3. Техника CSS Sprites Рассмотрев все аспекты объединения текстовых файлов, перейдем к графической и мультимедийной информации. Сейчас уже много где написано и упомянуто про технику CSS Sprites (или CSS Image Maps). Ниже приведены несколько примеров и полезных ссылок. И пара советов, где
Приложение В Техника отладки
Приложение В Техника отладки Это приложение содержит некоторые рекомендации и описание методов отладки сетевых приложений. Ни один из приведенных методов не является панацеей от всех возможных проблем, однако существует множество инструментальных средств, с которыми
Техника симуляции
Техника симуляции Естественным первым шагом будет вынести различающуюся функциональность Matrix‹› в два базовых класса: Matrix_‹›, реализующий общий случай, и Matrix_float_‹› для специфики Matrix‹float,…›.template‹class T, int Rows, int Columns› class Matrix_ { //…};template‹int Rows, int Columns› class Matrix_float_ { //…};
Техника
Техника Техника извлечения и манипулирования данными выходного набора использует курсор для чтения по порядку каждой строки из оператора SELECT В предварительно объявленный набор переменных. Часто это могут быть выходные аргументы, куда помещаются значения столбцов,
Глава 7 Техника для съемки
Глава 7 Техника для съемки Это одна из тех глав, в которой философского текста будет больше, чем картинок и диалогов. Все потому, что вопрос о технике для съемки всегда был наиболее щекотливым. Перед тем как решительно идти в магазин с вырванным из книги кратким списком
Глава 5 Техника съемки
Глава 5 Техника съемки 5.1. Главный секрет – избегать типичных ошибок5.2. Учимся двухмерному видению5.3. Композиция кадра5.4. Кадрирование5.5. Освещение5.6. Правильное использование вспышки5.7. Съемка движения5.8. Макросъемка5.9. Фотографа без штатива не бываетИ любительская
Лекция 16. Техника наследования
Лекция 16. Техника наследования Наследование - ключевая составляющая ОО-подхода к повторному использованию и расширяемости. В этой лекции нам предстоит исследовать новые возможности, разнородные, но демонстрирующие замечательные следствия красоты базисных идей.
Глава 6. Техника безопасности
Кибернетическая техника
Кибернетическая техника В 1969 году Б. Н. Малиновский был избран членом-корреспондентом Академии наук Украинской ССР. В 1971 году после ухода Г. Е. Пухова он возглавил Отделение кибернетической техники Института. Отделение занималось разработкой вычислительных средств, их
Техника
Техника Специально покупать новую фотокамеру для первых опытов в съемке натюрморта вряд ли стоит — вполне подойдет то, что у вас есть. Хорошая техника не спасет неудачную композицию. Главное в данном случае — не фотокамера, хотя конечно, высококачественное оборудование
Техника съемки
Техника съемки В макросъемке трудно с первой попытки получить превосходный результат. Если для остальных видов съемки обычно достаточно одного-двух дублей, то для макро потребуется сделать больше снимков. Хорошо, если отличным получится один из пяти или десяти
Техника макросъемки
Техника макросъемки Сюжетов для съемки макро всегда хватает с избытком, при этом снимки не похожи друг на друга. Подходящие для съемки объекты вы можете найти повсюду. Важно научиться смотреть на объекты внимательным взглядом (как смотрят на новые игрушки маленькие
технологии: Техника подсчета голосов
технологии: Техника подсчета голосов Авторы: Крюков Валерий, Чуров Владимир, Ященко ВикторВ "КТ" #698 от 21.08.2007 г. опубликована статья Бёрда Киви "Вопросы без ответов", в которой рассматривается уровень защищенности электронных систем голосования и степень их уязвимости к