Моделирование рельсов для нескольких сделок с акциями - PullRequest
0 голосов
/ 14 октября 2011

Я пытаюсь смоделировать (очень) простой симулятор торговли акциями в рельсах, чтобы поиграть с 3.1 и попытаться узнать больше о веб-бэкенде, в отличие от UX, где я обычно сижу.

так скажем, у вас есть

Users (has many transactions)
Transactions (belongs to users, companies)
Companies (has many transactions)

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

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

У него будет несколько строк транзакций, которые необходимо запросить и суммировать, чтобы выяснить

для каждой компании

  • если он вообще владеет акциями
  • сколько он владеет (все покупает - продает)
  • и т.д.

Так что мой вопрос: эта модель подходит для этого типа использования? Это кажется обременительным, если я хочу, например, написать страницу с указанием того, что принадлежит пользователю. Это означает запуск всех видов сумм, чтобы определить, принадлежат ли они, и количество принадлежит. Но, может быть, вот как это должно быть сделано? Или есть лучший способ?

Было бы лучше сохранить только одну транзакцию, представляющую «владение», и обновить в ней столбцы для каждой «принадлежащей» компании, а затем записать отдельные транзакции во вторую таблицу транзакций_истории, которая отделена и присоединена к транзакции?

1 Ответ

0 голосов
/ 14 октября 2011

Я думаю, что ваша структура модели в порядке.Если вы хотите упростить текущее владение пользователем, вы можете добавить дополнительную таблицу для эффективного кэширования этой информации.Возможно, добавьте модель OwnedShares, которая ссылается на пользователя, компанию и количество принадлежащих акций.

Затем можно использовать обратный вызов after_save в модели транзакций для обновления этих OwnedShares.

При такой структуре отчет о текущем праве собственности на пользователя будет легким, но вы не потеряете историю транзакций.

...