Я, должно быть, морально устарел, потому что не знаю, что такое MTI. А STI тут не очень подходит, потому что у разных сущностей есть уникальные (только им присущие) поля. И связи я бы делал не так, а что-то вроде:
--
— Посты полиморфно могут быть Статьями, Подкастами, Коровами и Планктоном.
— Статьи могут иметь какие-нибудь комменты, аттрибут-сеты и тд
— Подкасты могут иметь Обложки
— Планктон может иметь Усики
и тд. То есть делать ассоциации _не_ с «родительским» классом, а с «дочерними», если эти ассоциации уникальны для каждого типа.
--
Andrey Ognevsky
On Tuesday, July 19, 2011 at 2:36 AM, Vladimir wrote:
Андрей, спасибо за ссылку и внимание к вопросу, но я знаком с
полиморфизмом и его реализацией в Rails, я даже изначально хотел
использовать полиморфные ассоцияции, где post_attributes_set
belongs_to :postable, однако мне показалось более уместным STI / MTI.
Если никто ничего не подскажет другого, должно быть так и сделаю.
Алексей, спасибо за ссылку на settings_lord, по описанию - то, что
нужно, однозначно поковыряюсь в нем, как только высплюсь.
On Jul 18, 9:29 pm, "a.ognevsky" <a.ognev...@gmail.com> wrote:Однажды я писал статью про полиморфные ассоциации:http://habrahabr.ru/blogs/ror/79431/
И вообще, хорошая практика: перед тем, как о чем-то спрашивать -- поищите в гугле, возможно об этом уже кто-то когда-то писал.
--
Andrey Ognevsky
On Monday, July 18, 2011 at 9:08 PM, Vladimir wrote:Собственно вопрос достаточно прост, но у меня он возник поскольку
практического опыта мало. Итак, приготовились?В разрабатываемом приложении имеется сущность 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
--
--
Данное сообщение отправлено Вам, так как Вы являетесь подписчиком группы "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
--
Данное сообщение отправлено Вам, так как Вы являетесь подписчиком группы "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
Комментариев нет:
Отправить комментарий