добавить товары в корзину - PullRequest
0 голосов
/ 15 марта 2012

Допустим, клиент добавляет несколько товаров в корзину. Добавить машину, квартиру, тур, несколько купонов. Продукты относятся к категориям. Категория имеет атрибут имени. Но как придать различные атрибуты машине, квартире, туру, купону? Я не могу определенно создать все из модели продукта. Так что я должен создать разные модели для каждой категории и подключиться через многие модели продуктов ro? Или я иду в неправильном направлении? Спасибо

1 Ответ

0 голосов
/ 15 марта 2012

Наличие категории для отдельного продукта кажется хорошим подходом. Так как ваш Category отличается в зависимости от атрибутов. Что вы можете сделать, это создать еще одну модель, скажем: MasterCategory, которая имеет много Category, а Category принадлежит MasterCategory, что означает для вас MasterCategory Cars вы ' Вы получите Audi, BMW, Nissan etc etc. categories, а затем свяжете ваши продукты с соответствующими поставщиками в таблице products_categories, в которой будет product_id, category_id.

По моему мнению, схема может выглядеть следующим образом:

ProductsCategory:
product_id, category_id

MasterCategory:
id, name, created_at, updated_at

Category:
id, master_category_id, parent_id, name, position, name, permalink

Например, - A car MasterCategory будет выглядеть так:

#<MasterCategory id: 1, name: "cars", created_at: "2012-02-14 13:03:45", updated_at: "2012-02-14 13:03:45">

и categories будет:

[#<Category id: 1, master_category_id: 1, parent_id: nil, position: 0, name: "cars", created_at: "2012-02-14 13:03:45", updated_at: "2012-02-14 13:03:45", permalink: "cars">, #<Category id: 2, master_category_id: 1, parent_id: 1, position: 0, name: "Audi", created_at: "2012-02-14 13:03:45", updated_at: "2012-02-14 13:32:51", permalink: "cars/audi">]

Теперь вы можете использовать два метода parent и children в вашей Category модели, используя атрибут parent_id для легкого поиска и перемещения по master и подкатегориям . И вы можете использовать атрибут permalink, чтобы легко найти категорию, которая относится к другой категории с одним запросом: Category.find_by_permalink(params[:permalink]) и может отображать все продукты, связанные с этой конкретной категорией. В будущем, когда вы будете масштабироваться, могу поспорить, вам понадобится этот атрибут position, чтобы управлять положением ваших категорий для отображения на вашей странице. И в последнем master_category_id даст вам легкость в жизни с:

car = MasterCategory.find(1)
car.categories.where("parent_id IS NOT NULL")

Всего наилучшего !! :)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...