Mongo Design вопрос с Rails / Mongoid для приложения отслеживания счета - PullRequest
0 голосов
/ 12 октября 2010

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

Моя первоначальная мысль заключалась в следующем:

class User
  include Mongoid::Document
  embeds_many :bills

  field :categories, :type => Array
end

class Bill
  include Mongoid::Document
  embeded_in :user, :inverse_of => :bills

  field :category
  index :category
end

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

Итак, пара вопросов:

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

  2. Как мне проверить validate_uniqueness_of: Categories в моей пользовательской модели.Я не думаю, что это работает с такими элементами массива, но я могу ошибаться.Я не хочу, чтобы пользователь создавал категории с тем же именем.Я полагаю, что это может быть преимуществом отдельной модели, встроенной в пользователя, но опять же, похоже, больше работы, чем необходимо.

Может кто-нибудь сказать мне мои лучшие варианты здесь, чтобы проверить, что у пользователя есть уникальные категории (но пользователи могут иметь те же категории, я, очевидно, не волнуюсь об этом, просто уникален всфера одного пользователя)

1 Ответ

1 голос
/ 12 октября 2010

[Обновление]

Дизайн кажется правильным.Каким образом вы можете проверить уникальность в Rails?При добавлении категории потяните список и выполните проверку indexOf, чтобы убедиться, что она не существует.Если это просто возвращает сообщение об ошибке.

Я не парень из Rails, дайте мне знать, если я не в курсе или что-то в этом роде.


Я не уверен MongoDBбудет лучшим выбором для хранения двигателей для этого.Вам было бы лучше использовать MySQL с таблицей категорий.

Удары по MongoDB:

  • Не ACID-транзакции
  • Нет срока службы одного сервера
  • Не реляционно (требуется реляционное приложение для отслеживания счетов)
...