我对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?
提前致谢!
答案 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]
。