Общие (полиморфные) адреса в Rails используя полиморфизм и вложенные атрибуты

февраля 15, 2011  |  Published in Ruby on Rails, Ruby on Rails 3

Ruby on Rails 3Представьте, что вы разрабатываете приложение электронного магазина и у вас имеются две модели пользователей: клиенты и сотрудники. Для обеих моделей в базе необходимо хранить адреса и вы не имея опыта в раработке должно быть поместите информацию об адресах в таблицы с клиентами и сотрудниками, что, в дальнейшем может оказаться не правильным решением. Следующим шагом в вашей эволюции как разработчика будет создание отдельных таблиц для адресов клиентов и адресов сотрудников, так как адреса есть отдельными сущностями, которые должны представляться отдельной моделью и храниться в отдельной таблице. Однако в чем различие между адресами или контактными данными клиента и сотрудника? Если разницы нет, то здесь начинается следующая ступень вашей эволюции как веб разработчика — вы помещаете адреса клиентов и сотрудников в одну таблицу. Такая архитектура позволяет выDRYить ваш код от повторения и не запутываться в десятках ненужных таблиц. В данном случае адрес является отдельной сущностью, моделью, которую мы используем в других моделях — моделях клиентов и сотрудников и можем использовать еще в множестве других моделей, которым необходимы адреса. Как же нам передавать объект в различные модели? — На самом деле все достаточно просто и нам поможет в этом полиморфизм!
Read the rest of this entry »

Tags:

Кратко о принципе DRY в Ruby on Rails

января 2, 2011  |  Published in Ruby on Rails

C Новым Годом ув. читатели блога RubyDev.ru!

happy new year

Это краткая заметка для самых-самых новичков в программировании на Ruby и Ruby on Rails, которые еще не знакомы с таким принципом разработки как DRY.

Аббревиатура DRY расшифровывается как Don’t Repeat Yourself, что на более благозвучный русский переводится как: Не повторяйся! Согласно этому принципы программист должен оптимизировать свой код таким образом, чтобы код выполняющий какую-либо функциональность существовал в одном экземпляре. На практике это означает что общий код для нескольких моделей, представлений или контроллеров должен выносится с отдельный файл, модуль, класс, метод и т.д. Это дает нам следующие преимущества:

1. Меньше кода = больше читабельность
2. Меньше кода = меньше работы по его написанию и отладке.

Read the rest of this entry »

Tags:

Как сделать вложенные комментарии в Ruby on Rails? Часть первая: Модели.

декабря 26, 2010  |  Published in Ruby on Rails, Ruby on Rails 3

ruby on rails polymorphic associationsНа YouTube вы могли заметить замечательную систему комментирования, где вы можете комментировать не только видео, но и отвечать на комментарии других людей, что по-сути является комментированием других комментариев.

Если вам нравится такая система комментирования, и вы хотите добавить что-то похожее в свое приложение, то вы могли бы создать две таблицы, например: PostComment и CommentComment или что-то подобное. Однако лучшим вариантом будет использование полиморфных ассоциаций. Полиморфизм позволяет комментариям принадлежать как посту, так и другим комментариям и еще чему угодно. «Полиморфные ассоциации» вероятно испугали вас, однако использовать их проще, чем вы могли предположить.

Внимание! В статье описывается то, как это делается в Ruby on Rails 3. Исходные коды вы можете скачать на . Read the rest of this entry »

Tags: ,

Маршрутизация внутри приложений на Ruby on Rails 3

ноября 22, 2010  |  Published in Ruby on Rails, Ruby on Rails 3

ruby on rails routingДанная статья написана в продолжение серии статей посвященным переходу на Ruby on Rails 3. Для тех же людей, которые только знакомятся с фреймворком Ruby on Rails, эта серия статей также может послужить не плохим руководством.

Другие статьи из этой серии:
Active Record запросы в Ruby on Rails 3

В Ruby on Rails 3 изменения коснулись не только ActiveRecord, но и маршрутизации. Для начала давайте определимся с терминологией: Маршрутизация или роутинг – это набор правил, которые определяют, к какому ресурсу получит доступ пользователь, перейдя по определенному адресу URL. Роут — одно правило маршрутизации (роутинга).

Read the rest of this entry »

Tags:

Active Record запросы в Ruby on Rails 3

сентября 9, 2010  |  Published in Ruby on Rails, Ruby on Rails 3

Ruby on Rails 3В Ruby on Rails 3 используется новый движок запросов к базе данных – , который вынесен в отдельный gem. Благодаря новому движку Active Record 3.0.0 стал более удобным и простым.
Давайте сравним то, какими были запросы в Ruby on Rails 2.3.x и какими стали в Ruby on Rails 3.

В нашем примере, приложение Rails будет содержать всего две модели: Article и Comment, которые имеют между собой взаимосвязь:

Article has_many :comments

В первом примере мы выбираем из базы данных десять последних записей в таблице Articles:

Article.find(:all, :order  =>  “publish_at desc”, :limit => 10)

Теперь давайте посмотрим, как выглядит запрос, выполняющий абсолютно ту же выборку в Ruby on Rails 3:

Article.order(“published_at desc”).limit(10)

Read the rest of this entry »

Tags: