0

Рассмотрение сценария системы управления запасами. В инвентаре есть много типов предметов, каждый из которых имеет собственную таблицу и столбцы. Один, два или двенадцать таблиц недостаточны для описания множества ТИПОВ элементов, поскольку они чрезвычайно различны. например некоторые атрибуты семейства предметов, таких как BIKES, не имеют одинаковых атрибутов CARS. Разработчику очень сложно учесть тысячи ТИПОВ элементов и включить их в каждую модель вручную.Создание пользовательских моделей и таблиц SQL в Ruby on Rails 4

Есть ли способ для пользователей самостоятельно создавать модели? тем самым генерируя собственные таблицы SQL и т. д. Есть ли другой подход к этой проблеме? (Возможно, используя Semantic Web Technologies)

Исходя из Spring Framework, я довольно новичок в разработке RoR.

Спасибо заранее.

ответ

0

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

  • Item_Type
  • Item_Attribute
  • Item

item_type будет иметь имя переменной (не уникальный), и, возможно, какие-либо другие общие атрибуты, которые вы бы хотели. Тогда он будет иметь отношение has_many Item_Attributes, тогда как Item_Attributebelongs_to Item_Type.

Поэтому я бы сделал представление, которое позволяет пользователю добавлять новые Item_Type s, а затем определять Item_Attribute s для этих типов элементов.

Тогда у вас может быть настоящая модель Item, каждый из которых представляет собой наличие Item_Type в инвентаре. Item относится к Item_Type и Item_Typehas_manyItems и Item не может иметь нуль Item_Type.

Таким образом, пользователь создает новый Item_Type с именем «BIKE», а затем добавляет к нему несколько Item_Attribute, например «Горы» и «Красный». Затем пользователь может создать новый Item, который имеет отношение к «BIKE» Item_Type.

Если бы они хотели, чтобы добавить синий горный велосипед вместо красного, они должны были бы снова пройти через этот процесс, добавив еще один Item_Type из «ВЕЛОСИПЕД» за исключением добавления «Blue» в качестве атрибута для нового экземпляра Item_TypeItem_Attribute s.