【发布时间】:2017-04-20 19:56:47
【问题描述】:
我正在尝试确定在使用 Rolify(使用 Devise 和 CanCanCan)时是否可以使用此流程...如果可以,将如何实现:
我有一个班级Shop,属于User。我希望创建相应 Shop 实例的用户能够将 Rolify 角色 (:manager) 分配给任何用户(注意,任何创建实例的用户都应该能够分配角色 - 而不仅仅是用户谁拥有角色:admin)。
我知道这可以通过 rails 控制台通过 add_role 命令实现(例如,使用带有 id: 5 的 Shop 实例):
user.add_role :manage, Shop.find(5)
但我不清楚这是否可以由单个用户以编程方式完成 - 用户可以将角色分配给另一个用户。具体来说,通过从可搜索的下拉表单中选择用户并在提交时分配角色。
虽然我还没有任何值得展示/有助于展示的代码,但我希望在这里获得关于如何最好地解决这个问题的指导(例如,应该在 shops_controller.rb 或它自己的控制器?)。另外,最好完全放弃使用 Rolify 并为 shop_managers 创建一个连接表?
如果有帮助,这里是 Ability.rb 类:
class Ability
include CanCan::Ability
def initialize(user)
if user
if user.has_role? :admin
can :manage, :all
else
can [:edit, :update], Shop.with_role(:manager, user)
can :manage, Shop, :user_id => user.id
can :manage, User, id: user.id
can :read, :all
end
end
end
非常感谢!
【问题讨论】:
标签: ruby-on-rails ruby devise cancancan rolify