Я проектирую многоязычный сайт электронной коммерции. Продукты имеют различные свойства. Некоторые свойства различаются для каждого языка (например, цвет), другие свойства одинаковы для всех языков (например, SKU). Свойства не предопределены, например, автомобили имеют свойства, отличные от эспрессо-машин.
Я бы хотел разработать схему базы данных так, чтобы:
Я думаю об использовании такой схемы:
{
_id: ObjectID("5dd87bd8d77d094c458d2a33"),
multi-lingual-properties: ["name", "description"],
name: { en: "Super fast car",
nl: "Hele snelle auto"},
description: { en: "Buy this car",
nl: "Koop deze auto"},
price: 20000,
sku: "SFC106X",
categories: [ObjectID("4bd87bd8277d094c458d2a43")]
}
Есть ли лучшая альтернатива этой схеме? Какие проблемы возникнут при использовании этой схемы?
-121--1271844-
У меня есть простая модель
class User
has_many :logs
class Logs
, связанная обычным способом через регистрации user_id внешнего ключа. Я пытаюсь сделать следующее, используя Арела, и согласно доку Арела, это должно сработать.
u_t = Arel::Table::new :users
l_t = Arel::Table::new :logs
counts = l_t.
group(l_t[:user_id]).
project(
l_t[:user_id].as("user_id"),
l_t[:user_id].count.as("count_all")
)
l_t.joins(counts).on(l_t[:id].eq(counts[:user_id]))
Когда я делаю это, я получаю ошибку
TypeError: Cannot visit Arel::SelectManager
Однако автор Arel явно предлагает , что Arel может делать такого рода вещи.
Пожалуйста, не пишите ответы о том, как я могу достичь того же запроса с необработанным sql, другого типа запроса Arel и т.д. Это образец, который меня интересует, а не конкретные результаты этого запроса.