我在这个问题上一直在撞墙 - 我有一些代码用于测试用户是否正在尝试访问他们与之关联的帐户,如果没有将其重定向到他们的自己的账户。基本上,它阻止人们通过他们以外的URL路由帐户访问。
此代码在我已构建的其他网站上没有问题,但由于某种原因,它无法处理新项目。
有问题的代码:
def set_company
if params[:id].nil?
@company = Company.find(current_contact.company_id)
else
@company = Company.find(params[:id])
if @company.id != current_contact.company_id
redirect_to(company_path(current_contact.company_id), alert: 'You can\'t access that account This is not your account!!! This one is.' )
end
end
end
理论上,当if语句返回true时,它应该重定向到带有当前用户设置的params ID的company_path。在第二次运行此代码时,它应该根据params id找到公司,然后在检查公司ID是否与当前用户的公司ID不匹配时返回false,而是我得到一个&# 34;这个页面有一个重定向循环"错误。
答案 0 :(得分:0)
我没有使用db
方法点击find
,而是认为您可以更好地验证纯值,然后才能执行find
方法:
def set_company
if params[:id].nil?
@company = Company.find(current_contact.company_id)
else
redirect_to(company_path(current_contact.company_id), alert: 'You can\'t access that account This is not your account!!! This one is.' ) if params[:id] != current_contact.company_id
@company = Company.find params[:id]
end
end
答案 1 :(得分:0)
试试这个......使用present
def set_company
if params[:id].present?
@company = Company.find(current_contact.company_id)
else
@company = Company.find(params[:id])
if @company.id != current_contact.company_id
redirect_to(company_path(current_contact.company_id), alert: 'You can\'t access that account This is not your account!!! This one is.' )
end
end
end