Я ищу отзывы о моем текущем плане реализации настраиваемых полей в рельсах. Я новичок в разработке рельсов и приложений в целом и буду благодарен за любые комментарии от более опытных людей.
Фон
Приложение: Следите за дегустацией еды и напитков.
Что я пытаюсь смоделировать:
- Пользователь создает новый тип образца.
- Они называют это: «Вино»
- Они решают, что для своей компании они хотят отслеживать следующие атрибуты: происхождение, тип винограда, компания, высота над уровнем моря, выдерживаемая температура и другие.
- Единственное предположение о типе образца, которое сделала моя база данных, - это то, что у него есть Имя. (например, кофе, вино и т. д.) все остальное - это настраиваемые поля, указанные пользователем.
Теперь, когда образец типа создан.
- Пользователь начинает создавать образцы вина винного типа.
- Они выбирают создать образец, выбирают тип вина.
- Поля, которые они должны заполнить, - это те поля, которые они указали ранее.
- В Origin указано: Франция, в шрифте Grape: шардоне и т. Д.
--
Мой план подхода следующий:
Когда пользователь создает образец типа, сохраните настраиваемые поля в виде массива или в каком-либо строковом формате и храните его в столбце с именем data.
SampleType
имя
вино
данные [origin, grape_type, company, ...]
Когда пользователь хочет создать образец типа Wine: я ищу образец вина типа, для каждого ключа в столбце данных он создает поля формы. Когда пользователь отправляет данные, я создаю хэш всех имен настраиваемых полей и соответствующих им данных. Я сериализую его и сохраняю в хэше в столбце данных, например:
Образец
типа
вина
данных { origin: "France", grape_type: "Pinot Grigio, ... }
На данный момент я планирую использовать hstore PostgreSQL для реализации хеширования в столбце данных.
Мои вопросы:
- Это подходящее решение для того, что я пытаюсь сделать?
- Возникнут ли у меня проблемы, если пользователи изменят, какие настраиваемые поля им нужны?
- Есть ли другие опасения, которые мне следует принять во внимание?
- Является ли mongodb и другие подобные БД лучшим выбором для этого типа модели?
Я использовал следующие ссылки в качестве справочника: http://schneems.com/post/19298469372/you-got-nosql-in-my-postgres-using-hstore-in-rails http://blog.artlogic.com/ 2012/09/13 / custom-fields-in-rails /
Как и многие другие сообщения о переполнении стека, однако, похоже, никто не использует его так, как я упоминал выше.
Любые комментарии приветствуются.