У меня есть приложение Rails, в котором пользователь может подписаться на аддоны, список динамический и содержит в настоящее время около 10 аддонов.Дизайн модели для аддонов в приложении
В списке указано, что включено/выключено.
Каждый аддон имеет довольно уникальный набор свойств.
Мое текущее решение является то, что приложение имеет 2 модели «родитель» и одну новую модель для каждого аддона:
class AddonPrototype
has_many :addons
end
class Addon
belongs_to :addon_prototype
belongs_to :user
end
class AddonAlpha
belongs_to :addon
end
class AddonBeta
belongs_to :addon
end
etc..
Модель
AddonPrototype
имеет один экземпляр каждого аддона, с имя по умолчанию - единственное свойство.Модель
Addon
со свойствамиenabled
,custom_name
. Когда пользователь посещает страницу с помощью аддонов, выполняется проверка, чтобы проверить, имеет ли пользователь экземплярAddon
для каждого существующегоAddonPrototype
, или же создать его «на лету».Для каждого аддона существует уникальная модель (например,
AddonAlpha
,AddonBeta
и т. Д.), С набором свойств apt для каждого конкретного аддона.
Этот дизайн чувствует себя громоздким, что может быть более компактной установкой?
Что такое 'AddonPrototype',' AddonAlpha' и 'AddonBeta'? – fivedigit
'AddonPrototype' является дедушкой, каноническим идентификатором каждого уникального аддона, там будет около десяти экземпляров. 'AddonAlpha' является внуком одного из экземпляров« AddonPrototype »и содержит все настройки для определенного пользователя. – Numbers