2012-01-20 32 views
0

我們正在構建產品支持應用程序。這個想法是有多個子域,每個子域用於支持其他組織產品。我們稱這個帳戶 - 每個帳戶都綁定到一個子域。 用戶也有角色 - 但是,用戶可以在account1上擁有一個角色,在account2上擁有其他角色。基於會話數據的驗證,在子域之間共享數據

基本上有兩個問題:

1)許多驗證是基於當前用戶的角色。由於它取決於current_account(這是會話數據),所以我無法在模型中進行這些驗證。這使我得到了一些醜陋的控制器代碼(醜陋的,因爲它真的感覺不合適)。我想在模型類變量中存儲current_account,但我讀到這不是線程安全的。任何建議? 2)幾乎每個數據庫記錄都是特定於當前賬戶的;所以,幾乎每個表都應該有一個account_id列,並且該模型應該有一個belongs_to帳戶關聯。我想避免這種情況。第一個(明顯)的事情就是爲每一個賬戶一個單獨的數據庫,但

一)有共享表

B)的老闆說,這個方案是不可接受的(會有多個賬戶,以相對較低的用戶數量)。有第三種方法嗎?

+0

您是否使用任何類型的權限管理寶石?它們可以幫助緩解寫入重複權限檢查的痛苦,並添加一些有用的助手。 –

+0

@DevinM - 是的,我正在使用CanCan(這很棒),但它也從會話數據派生它的信息(當前用戶可以做什麼),所以我不知道它可以提供什麼幫助? – Stanko

回答