2011-09-17 63 views
1

我有一些想法,我有一些用戶類型,建築物業主,建築經理。導軌3 - 設計阻止用戶登錄

我想創建用戶作爲大廈經理,但我不希望他們有權訪問登錄系統。此用戶僅適用於我的網站中的某些選擇框,但我需要在我的用戶索引頁面中顯示它們。

我想我可以做的是創建普通用戶,並用before_save創建另一個表中的新數據。

在一個請求中,我需要能夠在我的建築物中安裝多個建築管理器。也許最好的嵌套形式..我想我需要添加建築物ID到我的用戶表。也許他們可以分配一個以上的建築物。

現在,我的數據庫結構是這樣的:

table users with user data (username, password, email, first and last name, phone) 
table usertype have userid, typename and accesslvl 

但這個問題給我一些管理問題。它們不會與用戶數據相關聯。

我該如何解決這個問題?設備是否可以阻止某個用戶?我在Devise文檔中搜索,但沒有發現。

感謝您的幫助。

回答

2

有一種方法,管理員用戶可以批准登錄其他用戶帳戶。您可以使用類似的方法,但以編程方式批准您實際希望允許登錄的帳戶。詳情在這裏:

https://github.com/plataformatec/devise/wiki/How-To:-Require-admin-to-activate-account-before-sign_in

+0

謝謝,我錯過了這個解決方案。如果我已將selectbox選爲建築管理器,是否可以刪除密碼驗證?我用jquery隱藏它,但總是要求輸入密碼,在創建和編輯窗體..謝謝! – neimad

+0

如果這些帳戶無論如何都是無效的,那麼安全性並不重要。也許只是在這種情況下創建一個隱藏字段,其中包含默認密碼(或者可以在調用模型創建之前在控制器中創建密碼)。 –

+0

進一步思考,您可以將代碼設置爲在用戶模型中的「before_create」回調中設置默認密碼,並使用條件僅在建築管理器中執行此操作。這可能是最整潔的方法。 –