ruby-on-rails – 使用Pundit gem授权一系列ID
发布时间:2020-12-17 01:19:06 所属栏目:百科 来源:网络整理
导读:我有一个has_many关联的多选框. params进来如下: foo_ids: ["1","2","3"] 使用强参数,我不允许这个属性,因为我想自己授权,所以人们不能只是把它们想要的东西放进去. def update bar.foos = authorized_foos bar.update(baz_params) respond_with barendpriv
我有一个has_many关联的多选框. params进来如下:
foo_ids: ["1","2","3"] 使用强参数,我不允许这个属性,因为我想自己授权,所以人们不能只是把它们想要的东西放进去. def update bar.foos = authorized_foos bar.update(baz_params) respond_with bar end private def authorized_foos foos = Foo.find(params[:baz][:foo_ids]) foos.each do |foo| authorize foo,:manage? end end 这种方法将迫使我找到所有的foos,循环遍历它们,并单独授权每个foos.是否有更简单的方法来管理has_many授权,最好是使用Pundit gem? 解决方法
最简单的方法是循环.从用户阵列中迭代每个用户并授权每个用户.
例如, users_id_array = [1,2,3,4,5,6] private def authorized_users users = User.find(params[:group][:user_ids]) users.each { |u| authorize u,:manage? } ... end 所以这是最基本,最简单的答案. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |