我正在为用户编写一个快速应用程序来跟踪他们的日常账单(用于资金跟踪目的)。我希望用户能够定义自己的账单可以适用的类别。但是,我正在尝试确定对此进行建模的最佳方法,并将类别验证为唯一。
我最初的想法是这样的:
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
因此,用户可以添加类别,就像字符串一样,当他们添加账单时,他们将从可用的账单类别中进行选择。
所以,有几个问题:
这看起来像正确的设计吗?我认为没有必要定义一个实际的类别模型,因为它实际上只是一个用于索引账单的字符串,但我不确定单独的模型是否还有其他好处
如何在我的用户模型中 validate_uniqueness_of :categories。我不认为它适用于这样的数组项目,但我可能是错的。我不希望用户创建具有相同名称的类别。我想这可能是嵌入在用户中的单独模型的优势,但是这似乎比必要的工作更多。
有人可以告诉我我在这里验证用户是否具有唯一类别的最佳选择(但用户可以拥有相同的类别,我显然不在乎,只是在单个用户的范围内是唯一的)