ユーザーが毎日の請求書を追跡するための簡単なアプリを作成しています (お金を追跡する目的で)。請求書を適用できる独自のカテゴリをユーザーが定義できるようにしたいと考えています。ただし、これをモデル化し、カテゴリを一意として検証するための最良の方法を決定しようとしています。
私の最初の考えはこれでした:
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を実行するにはどうすればよいですか。このような配列アイテムでは機能しないと思いますが、間違っている可能性があります。ユーザーに同じ名前のカテゴリを作成させたくありません。これは、ユーザーに埋め込まれた別のモデルの利点かもしれませんが、必要以上に手間がかかるようです。
ユーザーが一意のカテゴリを持っていることを検証するための最良のオプションを教えてもらえますか (ただし、ユーザーは同じカテゴリを持つことができますが、明らかに気にしません。単一のユーザーの範囲内で一意です)