1

我的应用程序中有当前的数据库结构:

Publisher has_many videos, has_many users
Video      belongs_to publisher
User       belongs_to publisher

我希望能够根据发布者向用户授予权限,但实际被编辑的对象是视频对象。

这意味着用户 X 可以编辑来自发布者 1 和 2 的视频,但用户 Y 只能编辑来自发布者 2 和 3 的视频,依此类推。我很确定这可以通过 CanCan、Devise、Rolify 组合来完成。

谁能在这里指出我正确的方向?

4

1 回答 1

1

回复较晚,抱歉。希望您现在已经解决了您的问题,但我会为您提供解决方案。

在你的 CanCan 能力中,你有这样的东西:

def initialize(current_user) 
  current_user ||= User.new

  can :update, Video do |video|
    current_user.publisher_list.contains? video.publisher
  end
end

如果 user.publisher_list 返回用户可以修改的发布者列表,则上述代码将起作用。我相信你也可以这样做:

def initialize(current_user)
  current_user ||= User.new

  can :update, Video, publisher: {id: current_user.publisher_list}
end
于 2012-08-13T15:56:31.603 回答