2012-08-28 46 views
0

所以我有一個有點複雜的數據模型,並且試圖弄清楚如何建模它。我有Client。那Client belongs_to a FirmDB Schema&Rails關聯

Firm將有像屬性:

- Firm Size (0.2, 0.4, 0.6, etc.) 
- Firm Type (Big, Small, Medium) 
- Priority Level (1, 2, 3, 4, 5 - from low to high) 

一個User的has_many Clients

也就是說用戶需要能夠編輯每個企業的屬性:

例如爲Firm Size添加一個新的尺寸(比如0.95)。

所以我在想有一個Firm模型。然後還爲每個屬性分別建立一個模型。這樣一個用戶可以添加一個新的記錄到公司大小等

我有點困惑的是命名,並不會讓每個Firm看起來有點奇怪,給foreign_ids和所有?以及如何操縱數據?

E.g.對於一個企業,該記錄可能是這樣的:

:name => "Firm A", :firm_size_id => 1, :firm_type_id => 2, :priority_level_id => 1 

然後,當我想找到一個企業的規模,我要運行這樣的查詢:

Firm.find(1).firm_size.size 

對於FirmSize,我會怎樣命名這個屬性:'size'?如果我這樣做,那麼我會做一個Rails調用像上面這個樣子?:

FirmSize.find(1).size

這看起來有點尷尬。或者我會命名屬性nameFirmSize.find(1).name - 但這並不能完全捕捉它是什麼。在這種情況下,公司的規模。

這同樣適用於「FirmType」和「PriorityLevel」等

那麼其他值得關注的是,一旦我想要做的這些屬性的任何計算,不會我要做一些奇怪的體操,像:

product = Firm.find(1).firmsize.size * Firm.find(2).firmsize.size 

這似乎有點尷尬......或者這是正常的嗎?

想了解我解決這個問題的方法,我會很樂意提供幫助。

謝謝!

回答

0

爲什麼要爲公司的規模,類型和優先級創建單獨的模型?
您應該嘗試瞭解具有屬性/單獨模型的任何信息的目的。我想到了一個類似的XML子元素&的概念。雖然這是題外話,但我相信這應該讓你更清晰到整個事情:

說回正題,我說你去與製作Firm爲型號和size, type etc.作爲屬性。得到這個實現,然後再回頭看看你的問題。

主要的原因,爲什麼我這麼說的是,我沒有看到FirmType, FirmSize & FirmPriorityLevel having more than a fixed set of values &
你的業務邏輯不會Firmtype或FirmSize中心在一個巨大的方式。

如果是後者,我會說重新考慮你的策略。
P.S.我並不是說你在做錯什麼,只要確保你以最好的方式來做就行了。

+0

我同意你的觀點:確保我以最好的方式做到這一點。這就是爲什麼我在這裏問這個...爲了更清晰。 我必須讓它們分開的原因是FirmSize,FirmType,FirmPriorityLevel不是固定值。用戶應該能夠輕鬆創建新的「尺寸」,以及新的類型和優先級。另外,應該有一種方法來獲得兩個值。即FirmSize可以是'Big',但是具有0.6的'值',而小的是0.2。但是當用戶在前端選擇時,他們只是選擇「大」或「小」。 這同樣適用於其他屬性。 想法? – marcamillion

+0

您描述的場景是典型的。這有什麼困擾你。忘記所有這些關於不同大小和類型以及製作它們的用戶的大驚小怪。只要繼續並按我建議的方式進行編碼即可。 –

+0

根據您提供的背景,我相信我所說的是正確的。不過,如果有什麼讓你感到困擾的話,請提一個場景,我們可以討論一下。 –