Ruby on rails 如何验证用户仅编辑自己的传记

Ruby on rails 如何验证用户仅编辑自己的传记,ruby-on-rails,Ruby On Rails,我有两个模型用户和传记,他们都有一对一的联系 每个用户都有一本传记。我的问题是,我想让用户只编辑自己的传记,但从url一个用户可以编辑其他人的传记 例如“0.0.0.0:3000/传记/8/编辑”。在这里,用户可以轻松地更改id 如何停止此操作?在您的传记中控制器的“编辑”操作(以及更新)下,在调用@biography=biography.find(params[:id])的下方插入此命令: 是的,在before_过滤器中,您将使用相同的代码。但是在这些行之前,您需要添加@biography=b

我有两个模型用户和传记,他们都有一对一的联系

每个用户都有一本传记。我的问题是,我想让用户只编辑自己的传记,但从url一个用户可以编辑其他人的传记

例如“0.0.0.0:3000/传记/8/编辑”。在这里,用户可以轻松地更改id


如何停止此操作?

在您的
传记中
控制器的“编辑”操作(以及更新)下,在调用
@biography=biography.find(params[:id])的下方插入此命令:


是的,在before_过滤器中,您将使用相同的代码。但是在这些行之前,您需要添加
@biography=biography.find(params[:id])
。因此:
在\u过滤器之前:检查\u所有权,仅:[:编辑,:更新]
,然后在控制器底部使用
检查\u所有权
方法。谢谢sumskyi,您的答案可以帮助我解决这个问题。
unless @biography.user == current_user
    redirect_to root_path, notice: "You cannot do that" and return
end
before_filter :fetch_bio, :only => [:edit, :update]

def fetch_bio
  @biography = current_user.biographies.find(params[:id])
end