为所有三种设计行动消毒参数是必要的还是良好的做法?

时间:2017-05-04 20:09:03

标签: ruby-on-rails authentication model-view-controller devise

设计docs表示有三个操作允许将参数传递给模型:: sign_up,:sign_in和:account_update。以下示例(基于他们的文档)表明我使用了之前的过滤器。

protected 

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

他们没有明确说明,对其他两个行动的参数进行消毒是一个好主意,或者如果清理其他(非设计)模型参数是个好主意。这是我感到困惑的地方。我应该添加上面的代码,以便它是这样的吗?

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 个答案:

答案 0 :(得分:1)

您无需清理从未使用过的参数。大概在您的登录信息中(设计为:sign_in),您只使用usernamepassword,因此无需在那里清理任何额外的参数。

如果用户可以在您的编辑表单中更新他/她first_namewebsite等,那么您需要:account_update参数。