我有一个表单,用户可以在其中编辑用户模型和照片模型中的属性。用户模型有很多照片。
当用户提交表单时,参数将有,
:user => { :name => "blah blah",
:photos_attributes => {
"1" => { "id" => 10, "description" => "Some description"}
}
}
我current_user.update_attributes(params[:user])
在控制器上做了一个。
一切正常。但是没有对该操作进行授权。从而留下一个安全漏洞。用户可以通过更改表单帖子中传递的 ID(在 photo_attribtues 中)来修改他的任何照片。
如何检查当前用户是否有权(即他是否是所有者)使用 CanCan 更改 photo_attributes 中指定的照片。
注意:photos_attributes 是可选的。参数可能包含也可能不包含 photos_attributes。如果 params[:user] 中没有 photos_attributes,解决方案应该不会失败