2010-10-12 54 views
0

我正在爲用戶編寫一個快速應用程序來跟蹤他們的日常賬單(用於貨幣跟蹤目的)。我希望用戶能夠定義賬單可以適用的自己的類別。然而,我正在嘗試確定建模的最佳方式,並將類別驗證爲唯一。Mongo使用Rails/Mongoid設計賬單跟蹤應用程序的問題

我最初的想法是這樣的:

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:我的用戶模型中的類別。我不認爲它適用於這樣的數組項目,但我可能是錯的。我不希望用戶創建具有相同名稱的類別。我想這可能是嵌入在用戶中的單獨模型的優點,但它似乎更多的工作,而不是必要的。

有人能告訴我,我的最佳選擇這裏驗證用戶具有獨特的類別(但用戶可以有相同的類別,我顯然不關心的是,僅僅在單個用戶的範圍內是唯一)

回答

1

[更新]

的設計似乎正確。用Rails的具體方式,你將如何驗證唯一性?當添加一個類別拉列表,並執行indexOf檢查,以確保它不存在。如果它確實反彈了一個錯誤。

我不是一個Rails的傢伙,讓我知道,如果我脫軌或什麼的。


我不確定MongoDB會是那個存儲引擎的最佳選擇。使用MySQL和類別表會更好。

叩門對MongoDB的:

  • 不耐酸交易
  • 沒有一個單一的服務器耐久性
  • 沒有關係(您想關係數據的法案跟蹤應用程序)
+0

這更是一種鍛鍊爲了好玩,我不寫一個企業應用程序或任何東西,我只是想用rails3學習mongo,並認爲像這樣的快速小應用程序將是一個有趣的練習 – brad 2010-10-12 01:11:08

+0

@brad:我不是一個Rails的人,但我會將類別內聯存儲在用戶對象下的數組中。讓我更新我的答案。 – 2010-10-12 01:14:35

+0

謝謝你的回答,我應該提到,我明顯知道如何用'indexOf'或'include?'手動執行此操作,只是不確定是否有更好的方式來做到這一點。我可能會選擇這個答案,因爲它在技術上回答我的問題,只會稍微等一下。 – brad 2010-10-12 12:08:06