重定向循环导轨4

时间:2014-08-13 10:57:10

标签: ruby-on-rails redirect

我在这个问题上一直在撞墙 - 我有一些代码用于测试用户是否正在尝试访问他们与之关联的帐户,如果没有将其重定向到他们的自己的账户。基本上,它阻止人们通过他们以外的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;这个页面有一个重定向循环"错误。

2 个答案:

答案 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