Ruby on Rails 3: Основы работы с ActiveRecord моделью

февраля 10, 2012  |  Published in Ruby on Rails, Ruby on Rails 3, Базы данных

ruby on rails tutorialRubyDev — ваш друг в изучении Ruby и Rails!

Что такое модель?

Модель — это составляющая часть архитектурного паттерна MVC, которая хранит бизнес логику. В вашем приложении все модели должны храниться в директории app/models в отдельных файлах, имена которых должны соответствовать имени модели, например: Post -> post.rb, InvoiceProduct -> invoice_product.rb.

Как связаны модель и таблица?
В большинстве случаев модель ассоциируется с определенной таблицей в базе данных, например модель Post будет ассоциироваться с таблицей posts. Экземпляр модели являет собой объект представляющий одну запись из таблицы, а сама модель (класс) используется для работы со всей таблицей, например для поиска всех записей соответствующих некоторому условию.

Обратите внимание на то, как называется модель и как называется соответствующая ей таблица. Имя модели — всегда в едином числе, а имя таблицы во множественном.

Как создать модель?
Создать модель можно вручную, но лично я предпочитаю использовать генератор моделей:

$ rails g model Product name:string description:text price:integer
      invoke  active_record
      create    db/migrate/20120210115708_create_products.rb
      create    app/models/product.rb
      invoke    test_unit
      create      test/unit/product_test.rb
      create      test/fixtures/products.yml

Вызывая генератор я передаю в него в качестве аргументов имя модели и имена полей таблицы ассоциируемой с моделью вместе с типами данных этих полей (столбцов).

Генератор модели мне кажется более удобным потому, что одной командой я создаю сразу все необходимые для работы файлы: собственно модель, миграцию для создания соответствующей модели таблицы в БД, файл фикстур и болванку для написания тестов.
Read the rest of this entry »

Tags: , , , , , , ,

Ruby on Rails 3: Введение в ActiveRecord

февраля 9, 2012  |  Published in Ruby on Rails, Ruby on Rails 3

ruby on rails tutorialRubyDev — ваш друг в изучении Ruby и Rails!

В этой главе вы узнаете более подробно о том, что такое модель, чем занимается ActiveRecord входящий в состав Ruby on Rails, что такое ORM и что такое миграции.

Что такое модель?

Из предыдуших глав или из своего опыта разаботки на других языках программирования и платформах вы уже должно быть знаете, что такое модель, но я вынужден повториться:

Модель — это часть приложения, которая непосредственно работает с данными, то есть хранит бизнес-логику приложения.

В Ruby on Rails модельная прослойка реализована в виде модуля ActiveRecord. ActiveRecord предоставляет паттерн ORM для работы с записями в базе данных и не только ORM.

Что такое ORM?

ORM (Object Relation Mapping) — паттерн проектирования, который сводится к достаточно простой вещи — представлению записей в виде объектов.

Что такое ActiveRecord?

ActiveRecord — это фреймворк для работы с реляционными базами данных (MySQL, PostgreSQL, SQLite и т.д.). ActiveRecord реализует в себе не только паттерн ORM, но и миграции, валидацию, обратные вызовы (коллбеки), паттерн «Наблюдатель», ассоциации между записями и много-много чего еще.

В приложении на Ruby on Rails модели хранятся в директории app/models вашего приложения в файлах, что носят имена соответствующие именам классов-моделей: Post -> app/models/post.rb.

Модель в случае использования ActiveRecord представляет собой класс наследуемый от класса — интерфейса ActiveRecord::Base, например:

class Post < ActiveRecord::Base
end

Приведенный выше пример модели наследуясь от класса ActiveRecord::Base наследует от него всю мощь ActiveRecord, по этому приведенные выше две строки кода уже умеют делать очень многое!

Что такое миграции?

Миграции — это файлы в которых описывается структура базы данных. Каждый раз, когда вы используете генератор для создания ActiveRecord модели — вы создаете и соответствующий ей файл миграции. Вы можете создавать миграции отдельно от моделей, например, когда вам необходимо добавить или удалить поля в уже существующей таблице.

Миграции очень удобны для создания и редактирования и управления структурой базы данных. Миграции позволяют абстрагироваться от базы данных и использовать код написанный на изящном Ruby для определения схемы базы данных. Кроме того миграции упрощают разворачивание вашего проекта на сервере и позволяют всего одной командой создать все необходимые для работы приложения таблицы в базе данных.

 

Лучшая благодарность автору — ваши комментарии и популяризация ресурса! Спасибо всем за внимание к проекту и моральную поддержку его автора. Не забывайте о нашей группе во Вконтакте: !

Tags: , , , , ,

Интервью с Джереми Эвансом (Jeremy Evans) о Sequel и не только

октября 22, 2011  |  Published in Sequel, Интервью

Оригинал на английском: Interview with Jeremy Evans about Sequel and not only

Привет, Джереми. Расскажи читателям RubyDev немного о себе, своей работе и хобби.

Привет. Меня зовут Джереми Эванс (Jeremy Evans). Я работаю в калифорнийском бюро государственного учета (California Bureau of State Audits), в меленьком департаменте правительства штата которое занимается аудиом других правительственных департаментов. Я главные технический эксперт в департаменте и отвечаю за программирование для департамента, системное администрирование, сетевое администрирование и администирование баз данных, кроме прочих обязанностей.

Кроме компьютеров и программирования моим основным хобби является игра с моим трехлетним сыном.

Джереми, расскажи пожалуйста о Sequel и как у тебя родилась идея разработки Sequel?

это набор инструментов для работы с базой данных из программ на Ruby. Sequel разрабатывался для предоставления простого, независимого от базы данных API для взаимодействия с SQL-базыми данных. Sequel поддерживает продвинутые SQL возможности, которые не поддерживаются другими библиотеками для Ruby для работы с базами данных. Sequel также включает в себя мощный и гибкий ORM, который называется Sequel::Model.

Я не являюсь первоначальным автором Sequel. Первоначальный автор проекта — это Шэрон Рош(c)нер (Sharon Rosner) и я думаю, что толчком к разработке Sequel послужило то, что он был разочарован в ActiveRecord и хотел создать что-то лучшее. Шэрон работал над фреймворком, который назывался ServerSide и Sequel был изначально добавлен как компонент этого фреймворка (ServerSide::Database) в ноябре 2006 года. Затем, в марте 2007 года, он извлек компонент для работы с базой данных в отдельную библиотеку и назвал ее Sequel.

С марта 2007 до февраля 2008 он разрабатывал библиотеку и в марте 2008 он решил, что больше не хочет заниматься ее разработкой. Я недавно отправлял патчи для добавления поддержки ассоциаций в ORM Sequel’а и когда он решил, что больше не будет заниматься поддержкой проекта, то он написал мне и еще нескольким разработчикам письмо с вопросом не хочет ли кто-нибудь из нас заменить его. Мой ответ был принят и я работаю над улучшением Sequel по сей день.

Read the rest of this entry »

Tags: , , ,

Interview with Jeremy Evans about Sequel and not only

октября 22, 2011  |  Published in Sequel, Интервью

Russian version: Интервью с Джереми Эвансом (Jeremy Evans) о Sequel и не только

Hello Jeremy, please introduce yourself for RubyDev readers.

My name is Jeremy Evans.  I work for the California Bureau of State Audits, a small state government department that audits other government departments.  I’m the lead technical staff member here, responsible for the department’s programming, system administration, network administration, and database administration, among other things.

Outside of computers and programming, my main hobby is playing with my three year-old son.

Jeremy, tell me please what is the Sequel and how an idea of creating Sequel  born in your mind?

is a database toolkit for ruby.  It’s designed to provide an easy, database independent API for interacting with SQL databases.  It supports advanced SQL features not supported by other ruby database libraries.  It also ships with a powerful and flexible ORM called Sequel::Model.

I am not the original author of Sequel.  The original author was Sharon Rosner, and I believe the reason he originally created Sequel was because he was frustrated with ActiveRecord and wanted to create something better.  Sharon was working on a web framework called ServerSide, and Sequel was originally added as the database component of that (ServerSide::Database) in November 2006.  He extracted the database component into a separate library named Sequel in March of 2007.

From March 2007 until February 2008, he developed the library, and in March 2008, he decided he didn’t want to maintain it anymore.  I had recently submitted patches to add associations support to the ORM part of Sequel, and when he decided he didn’t want to maintain it, he emailed me and a few other developers asking if one of us wanted to take it over.  I accepted and have been working on improving the library since then. Read the rest of this entry »

Tags: , , ,