Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/55.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails 查询授权不起作用的Rails_Ruby On Rails_Ruby - Fatal编程技术网

Ruby on rails 查询授权不起作用的Rails

Ruby on rails 查询授权不起作用的Rails,ruby-on-rails,ruby,Ruby On Rails,Ruby,我正在尝试为页面显示创建授权方法。不幸的是,where查询似乎不能与我的代码正常工作 我仍然可以与所有用户一起访问该页面,尽管我应该只有在用户id等于当前用户id时才能访问该页面 Offer.whereid=?用户_id=?,2,2 报价加载0.7ms选择报价。*从id=2和用户\u id=2的报价中,限额为$1[[限额,11]] => 在控制台端,它似乎正确地返回了正确的记录 这是我的控制器 类提供程序控制器

我正在尝试为页面显示创建授权方法。不幸的是,where查询似乎不能与我的代码正常工作

我仍然可以与所有用户一起访问该页面,尽管我应该只有在用户id等于当前用户id时才能访问该页面

Offer.whereid=?用户_id=?,2,2 报价加载0.7ms选择报价。*从id=2和用户\u id=2的报价中,限额为$1[[限额,11]] => 在控制台端,它似乎正确地返回了正确的记录

这是我的控制器

类提供程序控制器<应用程序控制器 在\u操作之前:验证\u用户! 行动前:提供授权,仅:[:显示] 在\u操作之前:设置\u报价,仅:[:接受,:拒绝] 行动前:是否授权,仅:[:接受,:拒绝] def创建 租金=租金。findoffer_参数[:租金\u id] 如果rental&&rental.user\u id==当前\u user.id 将_重定向到request.referer,提醒:“请看omasta Kohtestassi。” 终止 如果Offer.exists?用户标识:当前用户标识,租金标识:Offer参数[:租金标识] 将_重定向到request.referer,警告:“瞧,tehdävain yhden tarjouksen tällähetkellä。” 终止 @offer=当前用户.offers.buildoffer\u参数 如果@offer.save 重定向到我的路径,注意:“Tarjous tehty。” 其他的 将_重定向到request.referer,flash:{error:@offer.errors.full_messages.join','} 终止 终止 def接受 如果@offer.odotta? @提供,海沃克西蒂! @offer.rental.updateactive:@主动的,主动的? 闪光[:注意]=“Tarjous hyväksyty。” 终止 将_重定向到request.referer 终止 def拒绝 如果@offer.odotta? @提议,海莉蒂! 闪光[:注意]=“Tarjous hylätty.” 终止 将_重定向到request.referer 终止 def秀 @offer=offer.findparams[:id] @租金=@offer.rental\u id?租金find@offer.rental_id:无 终止 私有的 def报价已授权 重定向到仪表板路径, 警报:Sinulla ei ole oikeuksia,除非提供。其中id:params[:id],用户id:current_user.id 终止 def set_报价 @offer=offer.findparams[:id] 终止 def已获得授权 重定向到根路径,警报:Sinulla ei ole tähän oikeuksia。除非当前用户id=@offer.rental.user\u id 终止 def报价参数 参数要求:报价。许可证:金额,:租赁id,:状态 终止 终止 这条线

Offer.where(id: params[:id], user_id: current_user.id)
将始终计算为true,因为它返回ActiveRecord::Relation–即使该关系的计算结果为空数组。因此,您的方法永远不会触发重定向

相反,请使用计算结果为true或false的方法,如:


请尝试调试params[:id]和current_user.id的值。您希望哪个控制器方法不正常?如果用户类确实具有\u many:offers关系,您也可以使用current_user对象-current_user.offers.exists?params[:id]来检查这一点
Offer.exists?(id: params[:id], user_id: current_user.id)