На второй неделе мы начали создавать и искать базы данных с помощью SQLite. Это было долгожданным дополнением к объектной ориентации. Поскольку возможность использовать браузер базы данных создала очень прочную основу для того, как на самом деле будут выглядеть объектные отношения в реальном приложении.

def выбирает_the_titles_of_all_projects_and_their_pledge_amounts_alphabetized_by_name
«ВЫБЕРИТЕ проекты.название, SUM(залог.сумма)
КАК «Общая сумма залога»
ИЗ проектов
ПРИСОЕДИНЯЙТЕ обещания НА обещания. project_id = Projects.id
СГРУППИРОВАТЬ ПО проектам.id
ПОРЯДОК ПО Projects.title ASC;”
конец

В этом коде я просто пишу какой-то необработанный SQL вне терминала. Я просматривал базу данных кикстартеров, в которой было три таблицы: Projects, Pledges и Users. Сначала с помощью SELECT я хочу определить, что именно я ищу. В этом случае я хочу вернуть название проектов и общую объявленную сумму, что я и назвал этой функцией SUM. Затем я выбираю, из какой таблицы извлекать эти данные (в данном случае это таблица проектов). Но ПОДОЖДИТЕ, я тоже хотел вернуть данные из таблицы залогов. Итак, теперь мне нужно СОЕДИНИТЬ таблицу обещаний с таблицей проектов. В этом случае таблица залогов имеет идентификатор проекта, и я собираюсь использовать этот столбец внешнего ключа для присоединения к таблице проектов. Как только я это сделаю, у меня будет готовая таблица соединений. Отсюда мне нужно только отсортировать данные так, как я хочу. Сначала я хочу СГРУППИРОВАТЬ все мои проекты, чтобы они отображались в таблице вместе, а затем я хочу СОРТИРОВАТЬ ПО в алфавитном порядке. Это вернет таблицу со всеми названиями проектов, перечисленными в алфавитном порядке, а также второй столбец, в котором указаны все суммы, обещанные каждому проекту.

Оттуда мы начали фокусироваться на реляционном отображении объектов, чтобы иметь возможность использовать SQL внутри нашего кода Ruby. Вызов базы данных для создания новых объектов и сохранения объектов обратно в базу данных. Концепции этого были довольно простыми, если вы понимаете ООП, но синтаксис для доступа к базе данных и создания среды для меня все еще немного туманен. Я не могу дождаться, чтобы узнать больше об этом!