2015-01-15 97 views
0

我想讓我的用戶能夠指定哪個組織是他們的默認組織。每個用戶可以屬於多個組織,如下圖所示:用戶has_many成員資格和has_many組織通過成員資格。如何指定默認會員資格?

Class User 
    has_many :memberships, dependent: :destroy 
    has_many :organizations, through: :memberships, source: :organization 
end 

Class Organization 
    has_many :memberships, dependent: :destroy 
    has_many :users, through: :memberships, source: :user 
end 

Class Membership 
    belongs_to :user 
    belongs_to :organization 
end 

什麼是指定一個組織和/或會員資格的用戶默認的最合適的方法是什麼?這樣,我可以在登錄到應用程序時顯示默認組織提要。

我試着給成員添加一個默認的布爾屬性,這似乎工作,但只是感覺不對。我曾考慮過在用戶模型中添加一個default_organization屬性,這個屬性只能保存組織的ID,但是看起來並不正確。

有沒有Rails批准的方式來處理這個問題?

回答

0

關於它的思考有幾種方法可以處理這個:

,因爲這是一個多對多的關聯中,你可以在關聯模型添加AA場,但需要一定的驗證,因爲你可以通過正常工作錯誤使這些關係中的一個以上關係成立。

另一種方式是通過爲您的用戶模型設置一個字段,就像您所描述的那樣,它有點笨重,但它會起作用。

我能想到的最後一種方式,我認爲最好的方法是在用戶和組織之間建立一種「一對一」的關係。是這樣的:

has_one :organization, as: :default_organization 

希望它幫助

+0

你能在這個擴大呢?我無法弄清楚如何讓這個工作。我嘗試在用戶模型上使用has_one:organization作爲::default_organization,但是在組織模型中查找default_organization_id,該模式不存在。即使它確實如此,這將如何幫助確定每個用戶的默認值? – jrmce 2015-01-16 00:02:02