ruby-on-rails – 使用Pundit gem授权一系列ID

前端之家收集整理的这篇文章主要介绍了ruby-on-rails – 使用Pundit gem授权一系列ID前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我有一个has_many关联的多选框. params进来如下:
  1. foo_ids: ["1","2","3"]

使用强参数,我不允许这个属性,因为我想自己授权,所以人们不能只是把它们想要的东西放进去.

  1. def update
  2. bar.foos = authorized_foos
  3. bar.update(baz_params)
  4. respond_with bar
  5. end
  6.  
  7. private
  8.  
  9. def authorized_foos
  10. foos = Foo.find(params[:baz][:foo_ids])
  11. foos.each do |foo|
  12. authorize foo,:manage?
  13. end
  14. end

这种方法将迫使我找到所有的foos,循环遍历它们,并单独授权每个foos.是否有更简单的方法来管理has_many授权,最好是使用Pundit gem?

解决方法

最简单的方法是循环.从用户阵列中迭代每个用户并授权每个用户.
例如,
  1. users_id_array = [1,2,3,4,5,6]
  2.  
  3. private
  4.  
  5. def authorized_users
  6. users = User.find(params[:group][:user_ids])
  7. users.each { |u| authorize u,:manage? }
  8. ...
  9. end

所以这是最基本,最简单的答案.

猜你在找的Ruby相关文章