rails cancan为特定用户定义能力

时间:2013-03-05 11:01:27

标签: ruby-on-rails cancan

我的应用程序中有表用户和主题。创建主题的用户具有完整的能力,该用户可以授予其他用户访问或编辑的权限。如何在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中实现它。

2 个答案:

答案 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

它可以轻松地在任何模型之间创建权限。