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