Полиморфная абстракция моделей и потенциал МИ в рельсах? - PullRequest
1 голос
/ 06 июля 2010

У нас есть модели, такие как Поставщик , Дистрибьютор , Поставщик , Покупатель в нашей схеме.Эти сущности имеют некоторые общие атрибуты (например, имя, описание, офисы продаж и т. Д.), Но в основном они имеют расходящуюся схему с различным has_many: через ассоциации (у поставщика есть много stock_keeping_units, у других - нет), из-за которых их нужно было свернуть вотдельные модели.

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

Какмогу ли я создать отношения is_a и абстрагировать эти модели покупателя, продавца и т. д. в модель компании, а при создании события, например, в случае партнерства, просто сказать, что компания 1 сотрудничает с компанией 2, не беспокоясь о том, что компаниявведите, чтобы я мог сделать что-то подобное в частичной форме для отправки события:

  <p>
    <%= f.label "Company 1" %>
    <%= f.collection_select :partnering_company_id_1, Company.all ,:id, :name, { :default => true} %>
  </p>

Я готов поделиться более подробной информацией о схеме, если она понадобится.Это возможно?Недавно я наткнулся на это сообщение в блоге, в котором описывается MTI, но я не уверен, применимо ли это к текущей формулировке проблемы.

Ответы [ 2 ]

0 голосов
/ 29 апреля 2011

Не знаю, актуально ли это, но недавно я работал над решением MTI. Это очень просто и прекрасно работает, кажется, что именно то, что вам нужно (ред.):)

Подумайте над этим: http://peterhamilton.github.com/citier

0 голосов
/ 06 июля 2010

Я бы использовал наследование одной таблицы . Я считаю, что это лучшее решение, когда у вас есть модели с очень похожими атрибутами.

Например, для Events у вас будет только одна таблица (events), которая должна иметь столбец type.

Нет хорошей документации по ИППП (по крайней мере, я ее не нашел), но this post и this нужно немного помочь ...

...