2012-09-13 33 views
0

花了幾天的時間嘗試在網上找到答案後,我想我應該尋求幫助。我試圖找出使用Rails關聯來實現這些關係的最佳方式。Rails設計用戶既belongs_to也has_many

我有4種型號:UserTransferBuildingBag

A User具有role屬性。 role的可能值爲'admin','building_contact''guest'

這就是它在樹形結構中的樣子。該AdminGuestBuildingContact@user的作用:

 
      Admin 
      | 
     Transfer 
     /  \ 
    Guest  Building 
     |   | 
     Bag  BuildingContact 

因此:

Admin has_many :transfers
Transfer belongs_to :admin

Transfer has_many :guests
Guest belongs_to :transfer
Guest has_many :bags

Transfer belongs_to :building
Building has_many :transfers
Building has_many :building_contacts

什麼是實現與User模型的關係的最好方法?

在此先感謝!

回答

2

我想要的基本問題之一:

用戶是否會擁有多個角色?我猜不是,因爲你有一個單一的角色屬性。他們可能會分享很多東西,但我會說不同用戶類型的業務邏輯會創建不同的模型。如何改變角色屬性,改爲使用類型屬性和使用STI?

class Admin < User; end 
class Guest < User; end 
class BuildingContact < User; end 

這樣,你將有繼承的用戶能力,但你可以定義不同的業務邏輯在適當情況下。你可以將它擴展到不同的控制器和視圖中,否則我會認爲你會冒比你想要的更大的User類。

+0

非常完美!我昨晚有這個想法,但不知道它叫什麼。所以我一直堅持我做這件事的方式。感謝您指點我正確的方向。 – cmoel

相關問題