понедельник, 18 июля 2011 г.

Вопрос об архитектуре приложения на rails

Собственно вопрос достаточно прост, но у меня он возник поскольку
практического опыта мало. Итак, приготовились?

В разрабатываемом приложении имеется сущность Post, от которой
наследуются Article, Page, Image, Product (STI). В таблице posts
хранятся некоторые общие для Article, Page и Image свойста. типа
title, datestamps, meta_keywords, meta_description, description,
page_title и т.д. Каждая наследуемая сущность (Article, Page,Image,
Product) имеет таблицу со специальными для этой сущности данными:
article_attributes_sets, page_attributes_sets и т.д.

В Post хочется сделать полиморфную ассоциацию, так чтобы
ArticleAttributesSet belongs_to :post, :as => post_attributes_set, а
Post has_one :post_attributes_set, :polymorphic => true, как мне
известно, полиморфизм объявляется только для belong - сущностей, а не
для тех, что has_many. Как бы это реализовать и правильный ли способ
реализации я выбрал? Если нет, подскажите как бы вы реализовали это.

В предыдущем своем вопросе к сообществу я спрашивал о CITIER, но мне
подсказали уйти от MTI в сторону добавления P - Presenter'a в
стандартную MVC архитектуру Rails-приложения. Разве Presenter является
лучшим выходом? Мне кажется создание Presenter'ов для создания
видимости MTI неправильным. В моем случа также можно было бы
использовать MTI как, например объединение таблиц posts и articles,
но, опять-таки многие ругаются на использование MTI в Rails.

Еще такой вопрос: Приложение должно быть конфигурируемым, хрранить
конфигурации в базе данных не представляется хорошим решением,
поскольку таблица settings: property | value не предоставляется мне
удобной для хранения настроек. В качестве хранилища настроек
приложения планирую использовать yaml-файл, на основе готорого будет
строится форма для редактирования настроек, основным преимуществом
yaml вижу в том, что настройки можно удобно разбить на категории и нет
типизации данных, но проблемой является необходимость написания
большого куска кода для построения меню из yaml.

--
--
Данное сообщение отправлено Вам, так как Вы являетесь подписчиком группы "RubyOnRails to russian" на группах Google.
FAQ группы находится по адресу: http://ru.wikibooks.org/wiki/RubyFAQ

Для того, чтобы отправить сообщение в эту группу, пошлите его по адресу
ror2ru@googlegroups.com
Чтобы отменить подписку на эту группу, отправьте сообщение по адресу: ror2ru-unsubscribe@googlegroups.com
Дополнительные варианты находятся на странице группы http://groups.google.com/group/ror2ru?hl=ru

Комментариев нет:

Отправить комментарий