检查param是否存在

时间:2012-05-09 17:52:29

标签: ruby-on-rails ruby-on-rails-3

我对Rails相对较新,并忙于构建具有各种访问级别的应用程序,例如global_admin和company_admin。现在company_admin应该只能访问特定公司而不能访问其他公司。

我的路线:

  resources :companies do
    resources :groups do
      resources :users
    end
  end

我创建了一个帮助程序来检查包含以下内容的访问权限:

 if params[:company_id].present?
   @company = Company.find(params[:company_id])
   ...

所以,如果我打电话,例如^ / companies / 1 / groups ^ / companies / 1 / groups / 1 / users,查询返回true并找到company_id,但如果我调用^ / companies / 1或^ / companies / 2它返回false。如果它(或者至少似乎是)存在,为什么它没有拿起company_id?

提前致谢!

1 个答案:

答案 0 :(得分:1)

当您未访问嵌套资源时,params[:company_id]会变为params[:id]

与团体相同。如果您访问/companies/1/groups/1,则params[:id]会为您提供该群组的ID,但如果您访问/companies/1/groups/1/users/1,则params[:id]会为您提供该用户的ID,而该群组的ID将为在params[:group_id]