2015-04-07 35 views
1

我期待完全關閉我的註冊系統(暫時),並且只有1個管理員帳戶可以被收入數據庫或種子。設計關閉註冊,但與管理員帳戶的種子數據庫

這對Devise來說可能嗎?或者關閉註冊也會關閉我的管理員用戶在其中的種子/耙子任務?

我目前有一個典型的devise設置用戶模型,其中管理列是一個布爾值 - 我目前正在開發中通過進入rails控制檯並手動更改它來設置該列。

任何幫助將輝煌!

由於

+0

https://github.com/plataformatec/devise/wiki/How-To:-Set-up-devise-as-a-single-user-system – max

回答

1

有詳細的步驟通過在步驟devise wiki;但基本上你可以跳過生成註冊路線:

devise_for :users, :skip => :registrations 

這將使其成爲一個單一的用戶系統將使其無法註冊。

這需要使用種子文件或通過控制檯創建第一個用戶。

或者你可以創建自己的控制器來處理第一用戶的時候就自動註冊:

devise_for :users, :controllers => {:registrations => "registrations"} 

# app/controllers/registrations_controller.rb 
class RegistrationsController < Devise::RegistrationsController 
    def create 
    if User.any? 
     redirect_to root_path, alert: 'Only one user allowed!' and return 
    end 
    super 
    end 
end 

除非你的種子/ rake任務是做一些很奇怪的像自動化網頁瀏覽器,然後將無

# Example of seeding an admin user: 
admin = User.create_with(surename: 'Doe', forename: 'John').find_or_create_by(email: '[email protected]') 
admin.add_role(:admin) 
+0

謝謝!但是,我將如何去接種初始管理員用戶?通過數據庫種子或通過自定義rake任務? – Jonathan

+0

有關不同方法的更多詳細信息的擴展答案。 – max

+0

在安全性方面,種子是最好的方式嗎? – Jonathan

0

你應該能夠刪除註冊的色器件路線和在T仍然種子:在你的種子/耙的任務,因爲它們通常涉及直接操作通過模型數據庫,並沒有去,雖然控制器在所有影響他的用戶。那麼只要您仍然有會話的設計路線,該用戶就可以登錄/註銷。