我的应用程序中有表用户和主题。创建主题的用户具有完整的能力,该用户可以授予其他用户访问或编辑的权限。如何在cancan中实现此结构。 我想要像
这样的东西can? :edit, @topic
can :edit, Topic do |topic|
//get object @topic i pass above, and check current user has ability to edit this topic
end
我考虑使用topic_id和user_id创建新的表名topic_share。主题和用户之间有很多关系。我不知道如何在cancan中实现它。
答案 0 :(得分:0)
如果您在主题表上有某种creator_id
,则可以在cancan中执行以下操作(假设您的能力围绕用户记录,而creator_id是创建主题和主题的用户的ID belongs_to user)
can :edit, Topic, creator_id: user.id
答案 1 :(得分:0)
我知道这不是一个直接的答案,但你可能想看看我创建的这个宝石:https://github.com/intrepidd/rails-canhaz
它可以轻松地在任何模型之间创建权限。