Моделирование покупателей и продавцов в приложении Rails для электронной коммерции - PullRequest
1 голос
/ 08 марта 2010

Я создаю приложение Rails, которое имеет функциональность в стиле Etsy.com. Другими словами, это как торговый центр. Есть много покупателей и много продавцов.

Меня волнует, как моделировать продавцов. Ключевые факты:

  • Там не будет много продавцов. Возможно, всего менее 20 продавцов.
  • Будет много покупателей. Надеюсь, многие тысячи:)
  • У меня уже есть стандартная модель пользователя с созданием учетной записи и ролями.
  • Я создал «роль» «продавца», которую администратор вручную применяет к соответствующим пользователям. Поскольку у нас будет очень мало продавцов, это не проблема.

Я рассматриваю два подхода:

(1) Создайте модель «магазина», которая будет содержать всю необходимую информацию о магазине. Продукты будут :belong_to: хранить, а не принадлежать продавцу. Отношения между моделью пользователя и магазина будут следующие: user :has_one store. Моя главная проблема с этим заключается в том, что я всегда считал has_one ассоциации немного странными, и я обычно стараюсь их избегать. Приложение довольно сложное, и я беспокоюсь о том, чтобы столкнуться с каскадом проблем, связанных с ассоциацией has_one, по мере того, как я буду продолжать разработку.

(2) Просто включите соответствующую информацию «хранилища» как часть пользовательской модели. Но в этом случае связанные с магазином столбцы БД будут применяться только к очень небольшому проценту пользователей, поскольку очень немногие пользователи также будут продавцами. Я не уверен, является ли это действительным беспокойством или нет.

Вполне возможно, что я думаю об этом неправильно. Я ценю любые мысли.

Спасибо.

1 Ответ

2 голосов
/ 08 марта 2010

Я бы определенно использовал отношения между магазином и пользователем. Это обеспечивает гораздо большую гибкость и намного более чистый дизайн данных.

У меня никогда не было проблем с использованием каких-либо базовых ассоциаций в Rails / Active Record. Что вы подразумеваете под "фанки"?

...