【问题标题】:undefined method permit in strong params强参数中的未定义方法允许
【发布时间】:2017-03-11 20:11:40
【问题描述】:

面临问题。 未定义方法permitnil:NilClass

def update_all
  authorize Role
  @roles = current_account.roles.where(admin: false)

  @roles.each do |role|
    permissions = params[:permissions]&.[](role.id.to_s)
    role.update(permission_params(permissions))
  end

  redirect_to edit_all_roles_path, notice: 'Permissions updated!'
end

在线permissions = params[:permissions]&.[](role.id.to_s) 过滤permissions。有时它会返回nil。我明白为什么方法permit 未定义。但是如何避免呢?

def permission_params(permission_params)
  permission_params.permit(permissions: [])
end

【问题讨论】:

    标签: ruby-on-rails ruby-on-rails-5


    【解决方案1】:

    假设您不希望在查询结果为 nil 时更新角色的权限,您可以跳过更新,除非权限存在:

    @roles.each do |role|
      permissions = params[:permissions]&.[](role.id.to_s)
      role.update(permission_params(permissions)) unless permissions.nil?
    end
    

    Nil-guards 并不理想,所以我可能会退后一步,看看为什么你会首先获得nil 的权限。希望这会有所帮助!

    【讨论】:

      猜你喜欢
      • 2021-02-04
      • 2014-02-08
      • 1970-01-01
      • 2016-08-17
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多