Я написал заявку на интернет-магазин одежды в Rails 2.3.5. Я хочу показывать похожие продукты, когда клиент просматривает страницу сведений о продукте.
Например, если клиент просматривает страницу с описанием костюма, я хотел бы отобразить аксессуары, которые соответствуют платью, такие как жилет, обувь и пояс. Я назвал сопутствующие товары ансамблем. Тем не менее, жилет, обувь и ремни также являются продуктами, из-за которых я изо всех сил.
У меня это работает следующим образом, но я знаю, что это не путь Rails. У меня есть таблица продуктов для всех продуктов. Не важно здесь, но у меня также есть таблица ProductDetails. У меня есть таблица ансамблей, которая имеет следующие столбцы:
- product_id - основной или исходный продукт, отображаемый на странице сведений
- outfit_id - связанный или вспомогательный продукт
При настройке данных в списке продуктов для каждого продукта у меня есть ансамблевая ссылка. Эта ссылка приводит вас к действию index в контроллере Ensembles.
Используя идентификатор из "основного" продукта, я нахожу все связанные строки ансамбля по product_id или создаю новый ансамбль и назначаю идентификатор основного продукта как product_id. Я хотел бы просто иметь возможность делать @ product.related_products для получения коллекции Ensemble.
Также на странице указателя я перечисляю столбцы основного продукта, чтобы пользователь мог быть уверен, что его основным продуктом был тот, который он выбрал из списка. У меня также есть список выбора других продуктов с действием «Добавить в ансамбль».
Наконец, на той же индексной странице у меня есть таблица, в которой отображаются продукты, которые уже есть в ансамбле, и в этом списке в каждой строке есть ссылка уничтожения для удаления определенного продукта из ансамбля. Было бы неплохо, если бы при наличии одной строки ансамбля @ensemble я мог бы сделать @ ensemble.product, чтобы получить Продукт, связанный с outfit_id строки ансамбля.
У меня это работает без ассоциаций, но мне нужно запускать запросы в контроллере для создания моих собственных коллекций @product, @ensemble и @ensembles. Также я нашел единственный способ уничтожить строку ансамбля с помощью Ensemble.connection.delete (sql для удаления), простой @ ensemble.destroy не работает.
Кто-нибудь знает, как я могу установить ассоциации или иметь ссылку на сайт, объясняющий аналогичную настройку. Ни один из найденных примеров не использует ту же таблицу. У них есть буква A, связанная с B до C. Я хочу, чтобы буква A относилась к другим от A до B.