Ruby on rails 授权用户以便他们只能查看自己的对象
我有一个用户模型,用户有很多病人。用户应该只能查看自己的患者 实现这一点的最佳方式是什么 这里是我原来的病人表演动作。这允许任何登录用户查看任何患者:Ruby on rails 授权用户以便他们只能查看自己的对象,ruby-on-rails,devise,authorization,Ruby On Rails,Devise,Authorization,我有一个用户模型,用户有很多病人。用户应该只能查看自己的患者 实现这一点的最佳方式是什么 这里是我原来的病人表演动作。这允许任何登录用户查看任何患者: def show @patient = Patient.find(params[:id]) @assessments = @patient.assessments end 我可以切换到下面,但随后我会看到一个错误页面(未找到患者id),我不确定这是否是处理该问题的最佳方法: def show @patient =
def show
@patient = Patient.find(params[:id])
@assessments = @patient.assessments
end
我可以切换到下面,但随后我会看到一个错误页面(未找到患者id),我不确定这是否是处理该问题的最佳方法:
def show
@patient = current_user.patients.find(params[:id])
@assessments = @patient.assessments
end
处理这种简单授权的最佳方法是什么?没什么特别的,只是希望用户只能查看和编辑他们自己的东西
编辑 以下是我在尝试访问其他用户的患者时遇到的错误:
Couldn't find Patient with 'id'=27 [WHERE "patients"."user_id" = ?]
相反,我更愿意向用户显示一条快闪消息,说明他们未经授权。def show
@patient = Patient.where(id: params[:id],user_id: current_user.id)
@assessments = @patient.assessments
结束
此处,@pateint将给出当前登录用户的所有患者,@assessment将给出与患者相关的评估。您走对了,您能显示您的show action参数吗这应该有效。你能显示错误信息吗?你想通过参数传递什么?患者id??我认为您应该使用
exists?
,因为如果传递了不属于当前用户的患者id,它将返回患者id nil。我猜关联没有正确完成,您可以向我们显示关联。用户有多个:患者和多个:评估。患者属于:用户,并有多个:评估。评估属于:用户,并且属于:评估。如果用户试图访问受限制的患者,我希望向他们显示一条自定义的flash消息,而不是rails错误页面“找不到'id'=27[其中“patients.”“user_id=?]”