Как я могу расширить модель с помощью направляющих? - PullRequest
3 голосов
/ 07 марта 2012

Я хочу иметь общую модель продукта, которая имеет основную информацию, такую ​​как имя, описание, номер артикула и т. Д. Я также хочу иметь другую модель, которая представляет собой конкретный тип продукта, который существенно расширяет модель продукта. Например: я хотел бы иметь модель одежды с дополнительными столбцами, такими как цвет, размер и т. Д.

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

1 Ответ

5 голосов
/ 07 марта 2012

Наследование в одной таблице ( документация ) является распространенным подходом. Другим является использование модулей для общей функциональности.

Вот пример использования модулей.

module Product
  def method_for_all_products
    # ...
  end
end

class Clothing < ActiveRecord::Base
  include Product

  def clothing_specific_method
    # ...
  end
end

class Furniture < ActiveRecord::Base
  include Product
end
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...