所以我有一個有點複雜的數據模型,並且試圖弄清楚如何建模它。我有Client
。那Client
belongs_to a Firm
。DB 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
這看起來有點尷尬。或者我會命名屬性name
? FirmSize.find(1).name
- 但這並不能完全捕捉它是什麼。在這種情況下,公司的規模。
這同樣適用於「FirmType」和「PriorityLevel」等
那麼其他值得關注的是,一旦我想要做的這些屬性的任何計算,不會我要做一些奇怪的體操,像:
product = Firm.find(1).firmsize.size * Firm.find(2).firmsize.size
這似乎有點尷尬......或者這是正常的嗎?
想了解我解決這個問題的方法,我會很樂意提供幫助。
謝謝!
我同意你的觀點:確保我以最好的方式做到這一點。這就是爲什麼我在這裏問這個...爲了更清晰。 我必須讓它們分開的原因是FirmSize,FirmType,FirmPriorityLevel不是固定值。用戶應該能夠輕鬆創建新的「尺寸」,以及新的類型和優先級。另外,應該有一種方法來獲得兩個值。即FirmSize可以是'Big',但是具有0.6的'值',而小的是0.2。但是當用戶在前端選擇時,他們只是選擇「大」或「小」。 這同樣適用於其他屬性。 想法? – marcamillion
您描述的場景是典型的。這有什麼困擾你。忘記所有這些關於不同大小和類型以及製作它們的用戶的大驚小怪。只要繼續並按我建議的方式進行編碼即可。 –
根據您提供的背景,我相信我所說的是正確的。不過,如果有什麼讓你感到困擾的話,請提一個場景,我們可以討論一下。 –