繁体   English   中英

强参数:如何使用条件允许参数

[英]Strong Parameters: How to permit parameters using conditions

我不想根据当前用户的角色允许某些参数。

例如:如果用户是管理员,则只允许role属性。

这可能吗?

是的,这是可能的。

你可以这样做:

def user_params
  # List of common params
  list_params_allowed = [:email, :title, :last_name, :first_name, :phone]
  # Add the params only for admin
  list_params_allowed << :role if current_user.admin?
  params.require(:user).permit(list_params_allowed)
end

这样,如果以后你有新的参数,你只需要添加一个列表(避免错误)。

如果要为管理员添加多个参数,可以这样执行:

list_params_allowed << :role << other_param << another_param if current_user.admin?

希望这有帮助。

您可以简单地执行以下操作:

def post_params
  allowed     = [:name, :age]
  conditional = Some_Condition_Applies ? [:title, :description] : []
  params_list = allowed + conditional
  params.require(:post).permit(params_list)
end

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM