繁体   English   中英

Rails 验证权威政策中的参数

[英]Rails validate params in pundit policy

我正在创建一个 trello 风格的应用程序,用户可以在其中在列表之间拖动卡片。 我正在处理 js 端的所有重新排序逻辑,并将list_idposition发布到我的 controller 中的 rails 更新操作:

card = authorize Card.find(params[:id])
card.update(card_params)

权威人士提供的授权方法如下所示:

def update?
  user.can_edit?(card.board)
end

这只是检查用户是否有权编辑板。 因为我允许list_id属性,所以用户可以很好地进行 POST 以将卡片移动到他无权访问的列表中。 为了解决这个问题,我在我的 controller 中添加了这个条件:

if current_user.can_edit? List.find(params[:list_id]).board
  // update card
else 
  // handle error
end

这个解决方案可以完成这项工作,但我不想在我的 controller 中引入任何授权。 我的权威政策无权访问card_params ,并且 model 无权访问 devise current_user ,所以这似乎是唯一的方法。 有没有办法可以将这种逻辑融入政策?

我找到了解决方案,我只需要通过列表策略授权新列表:

authorize List.find(params[:list_id])

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM