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

时间:2014-10-10 19:26:13

标签: ruby-on-rails strong-parameters

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

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

这可能吗?

1 个答案:

答案 0 :(得分:21)

是的,这是可能的。

您可以这样做:

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?

希望得到这个帮助。