【发布时间】:2013-08-20 15:14:11
【问题描述】:
我有一个 has_many 关联的多选框。参数如下:
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
这种方法将迫使我找到所有的 foo,遍历它们,并单独授权每个。有没有更简单的方法来管理 has_many 授权,最好是使用 Pundit gem?
【问题讨论】:
-
您好 Logan,我是 Pundit 的维护者之一,想了解您的用例。它是简单地授权集合中的所有记录,还是以某种方式涉及额外的检查?您的输入可以在未来的版本中很好地解决您的问题,也可以帮助其他人。如果您能发表评论here,我会很高兴。提前致谢!
-
为了让大家免于阅读 Github 上的整个问题线程。那里的这个问题已经结束,基本上可以通过扩展 Pundit 或改变你处理这个问题的方式来处理它。
标签: ruby-on-rails ruby-on-rails-4 strong-parameters pundit