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

相关问题