В моем приложении Rails3
я использую ActiveRecord
и Postgresql
.Разрешить пользователям создавать динамические атрибуты модели?
Скажем, у меня есть модель под названием Части. Модель имеет небольшой список стандартных атрибутов, таких как цена, количество и т. Д.
Однако, заказчик может хотеть добавить LotNumber
, а CustomerB может захотеть добавить OriginalLocation
.
Как я могу позволить им это сделать?
Я думал о создании модели PartsDetail, которая позволила им иметь тип.
class PartsDetail < ActiveRecord::Base
attr_accessible :type, :value, :part_id
belongs_to :parts
end
Так что «типа» может быть «LotNumber» и т.д.
Но я не совсем уверен, как это будет работать в моих ассоциаций и запросов.
Любые идеи?
Спасибо.
Для SQL: либо ne динамическая схема (новые столбцы), денормализация в столбце (например, JSON) или схему, которая представляет схему в столбцах (например, EAV). –
Использование клиентов в качестве разработчиков баз данных - очень рискованный подход. –
@Catcall Не обязательно «разработчики баз данных» (это подразумевает гораздо более широкий контекст, чем этот вопрос). Тем не менее, это * довольно часто * для * бизнес-требования * для присоединения дополнительных «настраиваемых» свойств к сущности. * Не позволяя * это (в некотором роде) может быть отрицательным по отношению к потребностям конкретного бизнеса. (В этом случае для CustomerB требуется OriginalLocation.) –