1

我已經使用設計製作了一個用戶和管理模型。我已經使用了強大的參數在應用程序/控制器/ application_controller.rb文件Rails 4設計強大的參數管理模型

class ApplicationController < ActionController::Base 
    # Prevent CSRF attacks by raising an exception. 
    # For APIs, you may want to use :null_session instead. 
    protect_from_forgery with: :exception 
    before_filter :configure_permitted_parameters, if: :devise_controller? 

    protected 

    def configure_permitted_parameters 
    devise_parameter_sanitizer.for(:sign_up) { |u| u.permit(:username, :email, :password, :password_confirmation, :remember_me) } 
    devise_parameter_sanitizer.for(:sign_in) { |u| u.permit(:login, :password, :remember_me) } 
    end 

end 

如何白名單管理模式?

devise_parameter_sanitizer.for(:sign_in) { |a| a.permit(:login, :password, :remember_me) } 

此外,如何將管理員sign_up白名單列入以便不會傳遞變量?我的猜測是

devise_parameter_sanitizer.for(:sign_up) { |a| a.permit()} 

UPDATE

我想編輯我的問題。

我的問題是如何讓管理模型自動將我的管理員註冊頁面黑名單?如果我什麼也不留下,我仍然可以通過「admins/sign_up」註冊。當然,我可以刪除「app/models/admin.rb」中的註冊表,但我想拒絕命令行註冊

- 使用範圍視圖明確定義每個視圖?對於管理員和用戶模型 -

+0

我認爲你應該使用的條件檢查控制器的方法conf_permitted_pa​​rameters內​​,然後允許管理員和用戶相應 – Mandeep

+0

你能提供給我一個例?我不確定這是如何完成的。這是我碰到的一個想法。不要在app/models/admin.rb文件中包含可註冊的內容。這樣,你只能通過命令行簽署某人。問題是我仍然需要將其列入白名單。 – Daniel

回答

0

如果您對用戶和管理員單獨的控制器,然後嘗試這樣:

def configure_permitted_parameters 
    if params[:controller] == "user" 
    devise_parameter_sanitizer.for(:sign_up) { |u| u.permit(:username, :email, :password, :password_confirmation, :remember_me) } 
    devise_parameter_sanitizer.for(:sign_in) { |u| u.permit(:login, :password, :remember_me) } 
    else 
    devise_parameter_sanitizer.for(:sign_in) { |a| a.permit(:login, :password, :remember_me) } 
    devise_parameter_sanitizer.for(:sign_up) { |a| a.permit()} 

,並有另一種方法也將可以創建兩個只有一個控制器用戶和管理員(名爲registrations_controller.rb)在名爲is_admin a的用戶表中有一個字段只有當他/她是管理員時纔可以爲用戶設置。創建一個種子,讓您的管理員這樣你seeds.rb文件:

admin_user = User.new(email: "[email protected]", password: "123", password_confirmation: "123", is_admin: "true") 
admin_user.skip_confirmation! 
admin_user.save 
+0

謝謝你的工作。我使用了選項1,因爲選項2不太安全,我想避免在用戶表中具有管理員屬性。 – Daniel

+0

直到現在我還沒意識到,但是像這樣配置控制器^^不允許我註冊。它允許我登錄管理員和用戶。但是它不允許用戶註冊。當我離開這些行時,我認爲它有問題。 devise_parameter_sanitizer.for(:sign_in){| a | a.permit(:login,:password,:remember_me)} devise_parameter_sanitizer.for(:sign_up){| a | a.permit()} – Daniel