0

設計docs指出有三個動作允許參數傳遞到模型::sign_up,:sign_in和:account_update。下面的例子(基於他們的文檔)建議我使用before過濾器。是否需要或很好的做法來消毒所有三個設計操作的參數?

protected 

def configure_permitted_parameters 
    devise_parameter_sanitizer.permit(:sign_up, keys: [:email, :username, :website, :invitation_code]) 
end 

他們沒有明確說明這是一個好主意,還消毒參數,其他兩項行動,或者如果它是消毒其他(非設計)模型PARAMS是一個好主意。這是我困惑的地方。我應該添加到上面的代碼,以便它是這樣的?

protected 

def configure_permitted_parameters 
    devise_parameter_sanitizer.permit(:sign_up, keys: [:email, :username, :website, :invitation_code]) 
    devise_parameter_sanitizer.permit(:sign_in, keys: [:email, :username, :password]) 
    devise_parameter_sanitizer.permit(:account_update, keys: [:email, :firstname, :lastname, :password, :password_confirmation, :website]) 
end 

此外,我怎麼知道參數正在轉換爲散列?

回答

1

您不需要清理從不使用的參數。推測在你的登錄(:sign_in設計)中,你只使用usernamepassword,所以沒有必要清理任何額外的參數。

如果用戶可以在您的編輯表單中更新他/她的first_name,website等,但您需要的是:account_update參數。

+0

這很有道理。所以,我需要爲每個動作提供一種消毒方法。謝謝! – sabaeus

相關問題