0

我正在为用户编写一个快速应用程序来跟踪他们的日常账单(用于资金跟踪目的)。我希望用户能够定义自己的账单可以适用的类别。但是,我正在尝试确定对此进行建模的最佳方法,并将类别验证为唯一。

我最初的想法是这样的:

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。我不认为它适用于这样的数组项目,但我可能是错的。我不希望用户创建具有相同名称的类别。我想这可能是嵌入在用户中的单独模型的优势,但是这似乎比必要的工作更多。

有人可以告诉我我在这里验证用户是否具有唯一类别的最佳选择(但用户可以拥有相同的类别,我显然不在乎,只是在单个用户的范围内是唯一的)

4

1 回答 1

1

[更新]

设计看起来很合适。在 Rails 特定的方式中,您将如何验证唯一性?添加类别时,请拉出列表并indexOf检查以确保它不存在。如果它确实反弹了一个错误。

我不是 Rails 人,如果我偏离轨道或其他原因,请告诉我。


我不确定 MongoDB 是否是存储引擎的最佳选择。最好将 MySQL 与类别表一起使用。

对 MongoDB 的攻击:

  • 不是 ACID 事务
  • 没有单一服务器的持久性
  • 非关系型(您希望账单跟踪应用程序具有关系型)
于 2010-10-12T01:09:02.577 回答