我有两个模型user和bio,它们都有一对一的关联。
每个用户都有一个传记。我的问题是,我想允许用户只编辑他们自己的传记,但一个用户可以从 url 编辑其他人的传记
例如“0.0.0.0:3000/biographies/8/edit”。在这里,用户可以轻松更改 id。
我怎么能阻止这个?
我有两个模型user和bio,它们都有一对一的关联。
每个用户都有一个传记。我的问题是,我想允许用户只编辑他们自己的传记,但一个用户可以从 url 编辑其他人的传记
例如“0.0.0.0:3000/biographies/8/edit”。在这里,用户可以轻松更改 id。
我怎么能阻止这个?
before_filter :fetch_bio, :only => [:edit, :update]
def fetch_bio
@biography = current_user.biographies.find(params[:id])
end
在您的biographies
控制器中,在“编辑”操作(以及更新)下,将其插入到您的调用下方@biography = Biography.find(params[:id])
:
unless @biography.user == current_user
redirect_to root_path, notice: "You cannot do that" and return
end