zoonman
@zoonman
⋆⋆⋆⋆⋆

Как сделать виртуальные столбцы в ActiveRecord?

Вещь элементарная. Есть таблица товаров с фиксированным набором стобцов, например название и цена.
Эти характеристики присутствуют у всех товаров. А есть например цвет и размер или, что еще хуже, какая-нибудь уникальная фишка, присущая исключительно определенным товарам.
В систему будут загружаться разные прайс-листы, каждый из которых будет выглядеть с разным набором полей и т.д.
Предполагается сделать следующую структуру

Product [id, brand, name, price]
Field [id, name, order]
Value [id, value]
Data [id, product_id, field_id, value_id]

Данная схема обладает достаточной гибкостью, но я совершенно не представляю, как ее реализовать.
В плане импорта данных я нашел roo, а вот дальше я попал в затык.
Модели в целом представляю как сделать, но как засовывать и вытаскивать данные слабо.
То, что казалось бы элементарным в плане JOIN на уровне SQL, не понимаю как работает.
Rails вижу только несколько дней. Прочитал ман, но запутался еще сильнее.
Нужна либо статья на эту тему или просто объяснение, как такие вещи делаются в рельсах. Просто сказывается недостаток знаний (неделя знакомства с языком).
  • Вопрос задан
  • 2384 просмотра
Решения вопроса 2
@vsuhachev
Мне кажется вполне можно упростить
Product [id, brand, name, price]
Field [id, name, order]
Data [id, product_id, field_id, value]

Или у вас может быть много значений у одного поля?

Сохранять данные можно создавая объекты и вызывая у них метод save. Или сразу вызывая метод create
Ответ написан
sck_v
@sck_v
exflow.io
Используйте EAV для базового хранения данных, а для поиска и фильтров что-нибудь вроде ElasticSearch.
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
AMar4enko
@AMar4enko
Все зависит от того, что вам с этими данными надо будет делать.
Если просто хранить, то добро пожаловать в PostgreSQL и тип колонки json (хоть черта лысого туда пишите).
Если нужно искать, то я бы остался с PostgreSQL и навесил сверху ElasticSearch и в нем бы уже искал.
А эти все EAV хороши только на картинке. Когда начинаются сложные запросы - "поплыли".
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы