我正在尝试弄清楚如何将:collection
用户限制为可以的用户? :管理,@article.website
。如前所述,我正在使用 Cancan,我觉得我应该能够做这样的事情:
= f.input :user_id, collection: User.all unless cannot? :manage, @article.website
我正在使用 simple_form_for 因此 f.input。有什么想法吗?
最佳答案
CanCan 旨在回答“用户 U 可以做 X 吗?”的问题。我不认为 cancan 的设计目的是有效回答“哪些用户可以做 X?”这个问题。理论上你可以这样做:
User.all.select { |u| Ability.new(u).can?(:manage, @article.website) }
但是效率非常低。
除非您的用户数量非常少,否则您最好在 cancan 之外处理此问题。
关于ruby-on-rails - 我可以在表单输入集合中通过 CanCan 使用授权吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17801657/