пятница, 1 июля 2011 г.

Счетчик в связующей таблице

Имеется глупый вопрос, но я сначала сломал голову себе, а потом и всем окружающим. 

Предположим, что у нас есть пользователь и вещь. Пользователь может покупать вещь (это _не_ очередной ebay, поэтому все намного проще). Ассоциация — has_many through. 

user — user_item — item

На frontend нужно передавать данные о вещах пользователя в виде вещь1 (название, кол-во, цена), вещь2 (название, кол-во, цена). Отсюда вопрос, каким способом бы вы реализовали хранение этих вот вещей. Есть 2 варианта:
1. При покупке вещи в user_item добавлять новый элемент и проблем не знать. Если пользователь купил 20 раз одну и ту же вещь, то в связующей таблице будет 20 одинаковых записей.
2. Вариант, к которому я склоняюсь: хранить в связующей таблице некое поле num, в котором хранить кол-во купленных вещей. Таким образом, на каждую вещь будет только 1 запись и поле, указывающее на кол-во этих записей. 

Ну и таки вопрос, каким образом лучше всего (правильнее, что ли), при добавлении новых элементов инкрементировать счетчик, а при удалении — декрементировать? 

И второй вопрос, как в таком случае отображать все вещи пользователя с счетчиком (он ведь хранится в связующей таблице). 

У кого-нибудь есть идеи? Спасибо!

--
Andrey Ognevsky

--
--
Данное сообщение отправлено Вам, так как Вы являетесь подписчиком группы "RubyOnRails to russian" на группах Google.
FAQ группы находится по адресу: http://ru.wikibooks.org/wiki/RubyFAQ
 
Для того, чтобы отправить сообщение в эту группу, пошлите его по адресу
ror2ru@googlegroups.com
Чтобы отменить подписку на эту группу, отправьте сообщение по адресу: ror2ru-unsubscribe@googlegroups.com
Дополнительные варианты находятся на странице группы http://groups.google.com/group/ror2ru?hl=ru

Комментариев нет:

Отправить комментарий